C# 判断控件是否出现滚动条和禁用水平滚动条

xingyun86 3天前 24

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 - 博客园

×
打赏作者
最新回复 (0)
只看楼主
全部楼主
返回