c# - 滑动条拇指尺寸

标签 c# winforms

有谁知道是否可以通过编程方式确定System.Windows.Forms.TrackBar的拇指尺寸。 (我所说的拇指是指你拖动的那部分!)

我知道您可以从 System.Windows.Forms.SystemInfo 类中获取诸如滚动条宽度之类的信息,但似乎没有任何关于轨迹栏的信息。

谢谢。

最佳答案

拇指大小可以通过发送 TBM_GETTHUMBRECT 来获取向 TrackBar 控件发送消息。无法直接从 C# 执行此操作,但您可以定义适当的 Win32 结构并 p/invoke SendMessage():

[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
     public int Left;
     public int Top;
     public int Right;
     public int Bottom;
}

[DllImport("user32.dll")]
static extern void SendMessage(IntPtr hwnd, uint msg, IntPtr wp, ref RECT lp);

private const uint TBM_GETTHUMBRECT = 0x419;

// Implemented as an extension method.
public static RECT GetThumbRect(this TrackBar trackBar)
{
    RECT rc = new RECT();
    SendMessage(trackBar.Handle, TBM_GETTHUMBRECT, IntPtr.Zero, ref rc);
    return rc;
}

关于c# - 滑动条拇指尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5676750/

相关文章:

c# - ShowDialog() 之后窗体隐藏在另一个窗体后面

c# - Datagrid 在调整大小时变得模糊

c# - 保存winform控件值c#

c# - 折叠后自动调整 TreeView 的大小

c# - 在 Rx 中,为什么 When 给我过时的元素

c# - Ajax.beginform 执行完整回发而不是部分回发

c# - 在 C# 中创建或替换没 Root过的 XML 中的节点

c# - 如何使一个复选框使所有复选框在 Listview C# 中被选中

c# - 如何测试是否检查了 TreeView 节点和/或节点子节点?

c# - Monitor.TryEnter 始终返回 true,即使在 Monitor.Enter 之后也是如此