winform的comboBox使鼠标滑轮修改值失效

目标:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值