zoukankan      html  css  js  c++  java
  • C# winform在win7中鼠标滚轮无法滚动

    C#  Net winform在win7中鼠标滚轮无法滚动

    C# winform在win7中鼠标滚轮无法滚动控件

    NEt winform在win7中鼠标滚轮 无法滚动

    首先我参考于:

    https://blog.csdn.net/Jef_Zhang/article/details/105764324

    然后经过测试是在win7上只能滚动激活的控件

    正和上面博客写的是一个道理,

    但是他写的太复杂了,有一些复杂的控件他这个判断也不得行。

    然后我改良了一下。

      

        public static class ControlHelper
        {
            static ControlHelper()
            {
                IsLessWin7 = Environment.OSVersion.Version < new Version("6.2");
            }
    
            #region Win7滚动条不滚动的解决方案
    
            /// <summary>
            /// 是否小于win7系统
            /// </summary>
            public static bool IsLessWin7;
    
            /// <summary>
            /// 初始化Control使其可以滚动(用户任何控件内便可以滚动,如果动态新加的控件就没有效果)(BUG:有突然点击乱跳的问题,有弹出来的窗体关闭跳动的问题)
            /// </summary>
            /// <param name="panel"></param>
            public static void InitControlScroll(Control control)
            {
                //只在win7以下版本执行
                if (!IsLessWin7)
                    return;
    
                control.Click += (obj, arg) => { control.Select(); };
                foreach (Control control2 in control.Controls)
                {
                    control2.Click += (obj, arg) => { control2.Select(); };
                    InitControlScroll(control2);
                }
            }
    
            /// <summary>
            /// 初始化Panel使其可以滚动(用户点击滚动条或Panel德空白区域便可以滚动)(BUG:有突然点击乱跳的问题,非全Panel效果不好)
            /// </summary>
            /// <param name="panel"></param>
            public static void InitPanelScroll(Panel panel)
            {
                //只在win7以下版本执行
                if (!IsLessWin7 && !panel.AutoScroll)
                    return;
    
                panel.Click += (obj, arg) => { panel.Select(); };
                InitScroll(panel);
    
                foreach (Control control2 in panel.Controls)
                {
                    if (control2 is Panel panel2)
                    {
                        control2.Click += (obj, arg) => { control2.Select(); };
                        InitScroll(panel);
    
                        InitPanelScroll(panel2);
                    }
                }
            }
    
            /// <summary>
            /// 初始化滚动条(用户点击滚动条便可以滚动)
            /// </summary>
            /// <param name="scrollableControl"></param>
            public static void InitScroll(ScrollableControl scrollableControl)
            {
                //只在win7以下版本执行
                if (!IsLessWin7)
                    return;
    
                scrollableControl.Scroll += (obj, arg) => { scrollableControl.Select(); };
            }
    
            #endregion
    

      

      

     调用:

    ControlHelper.InitScroll(panelBkb);//推荐调用此方式,此方法没有bug,其他方法效果不好
    

      

    非常简单的代码,

    ok

    如有问题请联系QQ: var d=["1","2","3","4","5","6","7","8","9"]; var pass=d[8]+d[6]+d[0]+d[8]+d[2]+d[0]+d[4]+d[3]+d[2];
  • 相关阅读:
    LC.225. Implement Stack using Queues(using two queues)
    LC.232. Implement Queue using Stacks(use two stacks)
    sort numbers with two stacks(many duplicates)
    LC.154. Find Minimum in Rotated Sorted Array II
    LC.81. Search in Rotated Sorted Array II
    LC.35.Search Insert Position
    前后端分离:(一)
    Redis基本使用(一)
    GIT篇章(二)
    GIT篇章(一)
  • 原文地址:https://www.cnblogs.com/ping9719/p/14945699.html
Copyright © 2011-2022 走看看