判断是否出现垂直滚动条
using System.Runtime.InteropServices;
private const int WS_HSCROLL = 0x100000; private const int WS_VSCROLL = 0x200000; private const int GWL_STYLE = (-16); [DllImport("user32.dll")]
private static extern int GetWindowLong(IntPtr hwnd, int nIndex);
/// <summary> /// 判断是否出现垂直滚动条 /// </summary> /// <param name="ctrl">待测控件</param> /// <returns>出现垂直滚动条返回true,否则为false</returns> public 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> public static bool IsHorizontalScrollBarVisible(Control ctrl) { if (!ctrl.IsHandleCreated) return false; return (GetWindowLong(ctrl.Handle, GWL_STYLE) & WS_HSCROLL) != 0; }
ShowScrollBar Function
/*
* Scroll Bar Constants
*/
#define SB_HORZ 0
#define SB_VERT 1
#define SB_CTL 2
#define SB_BOTH 3
/*
隐藏和显示滚动条
[DllImport("user32.dll")] public static extern bool ShowScrollBar(IntPtr hWnd, int wBar, bool bShow);
/* * Scroll Bar Constants */ public const int SB_HORZ = 0; public const int SB_VERT = 1; public const int SB_CTL = 2; public const int SB_BOTH = 3; /* * ShowWindow() Commands */ public const int SW_HIDE = 0; public const int SW_SHOW = 5;
private void button1_Click(object sender, EventArgs e) { ShowScrollBar(listView1.Handle,SB_VERT , false); }