找回密码
 立即注册

QQ登录

只需一步,快速开始

lucky

论坛元老

16

主题

38

帖子

6006

积分

论坛元老

积分
6006

活字格认证

lucky
论坛元老   /  发表于:2014-4-22 17:44  /   查看:5489  /  回复:2
如何禁掉鼠标滚轴在日期控件中的上下移动日期的行为呢?

2 个回复

倒序浏览
Leo
超级版主   /  发表于:2014-4-23 09:32:00
沙发
分两种情况处理:
1. 如果连键盘滚动,侧边按钮(Spin按钮)也一并禁用,直接将Spin.AllowSpin = false即可。
2. 如果仅仅用鼠标滚轮,可以考虑使用MessageFilter之类的技术,例如:
  1.     public partial class Form1 : Form
  2.     {
  3.         private DisableMouseWheelMessageFilter _filter = new DisableMouseWheelMessageFilter();
  4.         public Form1()
  5.         {
  6.             InitializeComponent();

  7.             _filter.RegistForbiddenMouseWheel(this.gcDateTime1);
  8.             Application.AddMessageFilter(_filter);
  9.         }        
  10.     }

  11.     internal class DisableMouseWheelMessageFilter : IMessageFilter
  12.     {
  13.         private List<Control> _disableMouseWheelControlList = new List<Control>();

  14.         public void RegistForbiddenMouseWheel(Control control)
  15.         {
  16.             _disableMouseWheelControlList.Add(control);
  17.         }

  18.         public bool PreFilterMessage(ref Message m)
  19.         {
  20.             if (m.Msg == 0x20A) // WM_MOUSEWHEEL
  21.             {
  22.                 foreach (var control in _disableMouseWheelControlList)
  23.                 {
  24.                     if (control.ContainsFocus || control.Focused)
  25.                     {
  26.                         return true;
  27.                     }
  28.                 }
  29.                
  30.             }

  31.             return false;
  32.         }
  33.     }
复制代码
回复 使用道具 举报
lucky
论坛元老   /  发表于:2014-4-23 14:27:00
板凳
嗯,解决了。谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部