读书人

太怪了小弟我只是新建了一个禁用滚轮

发布时间: 2013-07-08 14:13:00 作者: rapoo

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

读书人网 >C#

热点推荐