سؤال

أحاول تعطيل تمرير الماوس في ToolStripCombobox ، اعتقدت أنه يمكنني التقاط حدث عجلة الماوس ، ولكن على الرغم من أن الحدث متاح لـ Combobox ، إلا أنه غير متوفر بدلاً من ToolstripcomboBox. أيه أفكار؟

هل كانت مفيدة؟

المحلول

ال ToolStripComboBox يساعد بشكل مفيد الكامنة ComboBox السيطرة في اسمها على نحو مناسب ComboBox منشأه. يتيح لنا ذلك الوصول إلى خصائصه وطرقه وأحداثه التي لم يتم لفها في ToolStripComboBox.

وكما تعلمون ، المعيار ComboBox السيطرة تعرض أ MouseWheel حدث هذا يطلق النار في كل مرة يتم فيها تمرير عجلة الماوس بينما يركز مربع التحرير والسرد.

وضع هذين الأمرين معًا ، يمكننا إضافة معالج ل 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 التحكم في سلوكه وتجاوزه بنفس الطريقة الموضحة أعلاه.

نصائح أخرى

بالإضافة إلى ما اقترحه كودي جراي ، قد ترغب في عمل العجلة عندما يتم إسقاط combobox. مجرد شيشة ولاية الانزلاق في مقبض موسيوميل:


    public class MyToolStripComboBox : ToolStripComboBox
    {
        public MyToolStripComboBox()
        {
            this.ComboBox.MouseWheel += new MouseEventHandler(ComboBox_MouseWheel);
        }

        void ComboBox_MouseWheel(object sender, MouseEventArgs e)
        {
            if (!this.ComboBox.DroppedDown)
                ((HandledMouseEventArgs)e).Handled = true;
        }
    }

التمرير المسقط Combobox بعجلة لا يغير التحديد ، لذلك يعمل كما هو متوقع

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top