首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

太怪了,小弟我只是新建了一个禁用滚轮的Combobox控件,为何窗体中所有控件的滚轮操作都失效了

2013-07-08 
太怪了,我只是新建了一个禁用滚轮的Combobox控件,为何窗体中所有控件的滚轮操作都失效了是否还少了一个什

太怪了,我只是新建了一个禁用滚轮的Combobox控件,为何窗体中所有控件的滚轮操作都失效了
是否还少了一个什么判断:
这是从网上找来的代码:
namespace DataTools
{
public class comboNoWheel: System.Windows.Forms.ComboBox,IMessageFilter   
{   
    public comboNoWheel()   
    {   
     Application.AddMessageFilter(this);   
    }   
    
    public bool PreFilterMessage(ref Message m)   
    {   
     if(m.Msg == 0x020A)namespace DataTools
{
public class comboNoWheel: System.Windows.Forms.ComboBox,IMessageFilter   
{   
    public comboNoWheel()   
    {   
     Application.AddMessageFilter(this);   
    }   
    
    public bool PreFilterMessage(ref Message m)   
    {   
     if(m.Msg == 0x020A)   //感觉 是这里少了个判断不知道加什么
      return true;   
     return false;   
    }   

}

      return true;   
     return false;   
    }   

}

[解决办法]
Application.AddMessageFilter(this);

这一行会往全局的消息泵中添加过滤器,自然对整个窗体都管用。
[解决办法]
一个重写事件的方法

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public bool isWheel = false;
        public string strComB = null;


 
        public Form1()
        {
            InitializeComponent();
 
            this.comboBox1.MouseWheel += new MouseEventHandler(comboBox1_MouseWheel);
            this.comboBox1.TextChanged += new EventHandler(comboBox1_TextChanged);
            this.comboBox1.MouseDown += new MouseEventHandler(comboBox1_MouseDown);
        }
 
        void comboBox1_MouseDown(object sender, MouseEventArgs e)
        {
            // throw new NotImplementedException();
            isWheel = false;
        }
 
        void comboBox1_TextChanged(object sender, EventArgs e)
        {
            // throw new NotImplementedException();
            if (isWheel)
            {
                comboBox1.Text = strComB;
            }
        }
 
 
        void comboBox1_MouseWheel(object sender, MouseEventArgs e)
        {
            // throw new NotImplementedException();
            strComB = comboBox1.Text;
            isWheel = true;
        }
    }
}

热点排行