太怪了,我只是新建了一个禁用滚轮的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;
}
}
}