目标:
winform窗体很多combobox下拉框,当他们其中的一个获得焦点的时候,如果滚动鼠标就会改变下拉框的值,要实现让鼠标滚轮不对下拉框的值造成影响
如下代码直接拷贝粘贴,不用修改
方法一:
实现一: public partial class Form1 : Form, IMessageFilter { public Form1() { InitializeComponent(); } #region IMessageFilter 成员 public bool PreFilterMessage(ref Message m) { if (m.Msg == 522) { return true; } else { return false; } } #endregion private void Form1_Load(object sender, EventArgs e) { Application.AddMessageFilter(this); } }
方法二:
在同一个namespace中添加一个类:
class comBoBoxEx : System.Windows.Forms.ComboBox { public bool isWheel = false; public string strComB = null; protected override void OnMouseWheel(System.Windows.Forms.MouseEventArgs e) { strComB = Text; isWheel = true; } protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e) { base.OnMouseDown(e); isWheel = false; } protected override void OnTextChanged(EventArgs e) { base.OnTextChanged(e); if (isWheel) { Text = strComB; } } }
参考:http://blog.sina.com.cn/s/blog_762e78b101011e8p.html