• 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];
  • 相关阅读:
    大二下每周总结
    大二下学期之阅读笔记(人月神话)
    大二下学期之阅读笔记(人月神话)
    大二下学期第一次结对作业(第一阶段:地图下钻)
    大二下学期第一次结对作业(第一阶段)
    java 多线程编程之: synchronized
    书籍
    elasticsearch size 设置最大返回条数
    Java 设计模式--策略模式,枚举+工厂方法实现
    Elasticsearch rollover API
  • 原文地址:https://www.cnblogs.com/ping9719/p/14945699.html
Copyright © 2020-2023  润新知