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];
  • 相关阅读:
    net5 webapi中 SwaggerUI如何进行版本控制
    动态菜单/权限管理的实现效果(数据前提:须做好 菜单、按钮、角色、用户等相关功能)
    MOS管的引脚,G、S、D分别代表什么?
    关系再好,也不要跟人透露这三个隐私。
    Linux 学习笔记
    算法 蓄水问题
    算法 等概率问题
    算法 字符串类问题(一)
    效率,生产力和用户友好的应用程序是GeneXus为Salinas集团带来的一些好处
    Multillantas Nieto通过智能设备和GeneXus将生产率提高了50%
  • 原文地址:https://www.cnblogs.com/ping9719/p/14945699.html
Copyright © 2011-2022 走看看