كيف تمنع تمرير الماوس في ToolStripcombobox؟
-
27-09-2019 - |
سؤال
أحاول تعطيل تمرير الماوس في 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 بعجلة لا يغير التحديد ، لذلك يعمل كما هو متوقع