C# 判断控件是否出现滚动条和禁用水平滚动条
废话不多少,直接上代码
private const int WS_HSCROLL = 0x100000;
private const int WS_VSCROLL = 0x200000;
private const int GWL_STYLE = (-16);
[System.Runtime.InteropServices.DllImport("user32",CharSet = System.Runtime.InteropServices.CharSet.Auto)]
private static extern int GetWindowLong(IntPtr hwnd, int nIndex);
/// <summary>
/// 判断是否出现垂直滚动条
/// </summary>
/// <param name="ctrl">待测控件</param>
/// <returns>出现垂直滚动条返回true,否则为false</returns>
internal static bool IsVerticalScrollBarVisible(Control ctrl)
{
if (!ctrl.IsHandleCreated)
return false;
return (GetWindowLong(ctrl.Handle, GWL_STYLE) & WS_VSCROLL) != 0;
}
/// <summary>
/// 判断是否出现水平滚动条
/// </summary>
/// <param name="ctrl">待测控件</param>
/// <returns>出现水平滚动条返回true,否则为false</returns>
internal static bool IsHorizontalScrollBarVisible(Control ctrl)
{
if (!ctrl.IsHandleCreated)
return false;
return (GetWindowLong(ctrl.Handle, GWL_STYLE) & WS_HSCROLL) != 0;
}禁用/启用水平方向滚动条
[DllImport ("user32")]
private static extern long ShowScrollBar (long hwnd , long wBar, long bShow);
long SB_HORZ = 0;
long SB_VERT = 1;
long SB_BOTH = 3;
private void HideHorizontalScrollBar ()
{
ShowScrollBar(listView1.Handle.ToInt64(), SB_HORZ, 0);
}亲测有效,Winform开发
来源:
c# - C# ListView 禁用水平滚动条_Stack Overflow中文网
Winform 判断控件是否出现滚动条 - viu - 博客园