目标:
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