我试图禁用ToolStripComboBox中的Mouse Scroll,我以为可以捕获Mouse Wheel事件,但是尽管该事件可用于ComboBox,但不适用于ToolStripComboBox。有任何想法吗?
最佳答案
ToolStripComboBox
有助于在其适当的名称ComboBox
property中公开其基础的ComboBox
控件。这使我们可以访问其未包装在ToolStripComboBox
中的属性,方法和事件。
而且,您可能已经知道,标准ComboBox
控件公开一个MouseWheel
event,该鼠标在组合框具有焦点时每次滚动鼠标滚轮时都会触发。
将这两件事放在一起,我们可以为ToolStripComboBox
控件的基础ComboBox
控件的MouseWheel
事件添加处理程序,并覆盖其默认行为。
因此,假设您有一个包含ToolStrip
和ToolStripComboBox
的表单,则可以使用以下代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//Attach a handler for the MouseWheel event
ToolStripComboBox1.ComboBox.MouseWheel += new MouseEventHandler(ToolStripComboBox_MouseWheel);
}
private void ToolStripComboBox_MouseWheel(object sender, MouseEventArgs e)
{
//Cast the MouseEventArgs to HandledMouseEventArgs
HandledMouseEventArgs mwe = (HandledMouseEventArgs)e;
//Indicate that this event was handled
//(prevents the event from being sent to its parent control)
mwe.Handled = true;
}
}
当然,您也可以选择替代现有的
ToolStripComboBox
控件,并以上面显示的相同方式在其中覆盖其行为。关于c# - 如何防止ToolStripComboBox中的鼠标滚动?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4264579/