2011-04-15 36 views
2

有谁知道是否有可能以编程方式确定System.Windows.Forms.TrackBar的拇指尺寸。 (通过拇指我的意思是你拖动的位!)Trackbar Thumb Dimensions

我知道你可以从System.Windows.Forms.SystemInfo类获得像滚动条宽度的东西,但似乎没有任何的trackbars。

谢谢。

回答

3

拇指大小可以通过发送TBM_GETTHUMBRECT消息到TrackBar控件获得。有没有办法直接从C#做的,但你可以定义适当的Win32结构和P /调用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; 
} 
+0

+1。完美,这是一种享受。谢谢! – Nick 2011-04-15 12:56:38