我试图禁用ToolStripComboBox中的Mouse Scroll,我以为可以捕获Mouse Wheel事件,但是尽管该事件可用于ComboBox,但不适用于ToolStripComboBox。有任何想法吗?

最佳答案

ToolStripComboBox有助于在其适当的名称ComboBox property中公开其基础的ComboBox控件。这使我们可以访问其未包装在ToolStripComboBox中的属性,方法和事件。

而且,您可能已经知道,标准ComboBox控件公开一个MouseWheel event,该鼠标在组合框具有焦点时每次滚动鼠标滚轮时都会触发。

将这两件事放在一起,我们可以为ToolStripComboBox控件的基础ComboBox控件的MouseWheel事件添加处理程序,并覆盖其默认行为。

因此,假设您有一个包含ToolStripToolStripComboBox的表单,则可以使用以下代码:

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/

10-12 16:32