Имея очень ограниченный опыт работы с .NET и Windows Forms, я в настоящее время играюсь с EWSoftware.ListControls MultiColumnComboBox. Я интегрировал EWSoftware.ListControls в Visual Studio 2019 и (с помощью дизайнера форм Visual Studio) могу разместить MultiColumnComboBox на форме, и код, как правило, может получить к ней доступ. Например, в качестве первого теста я могу заполнить раскрывающуюся часть MultiColumnComboBox необходимыми элементами (см. Ниже).
Однако, на мой взгляд, я не могу обработать событие Scroll, котороеMutiColumnComboBox предоставляет (согласно документации и согласно объектному браузеру Visual Studio). Я связал это событие с обработчиком, но обработчик никогда не вызывается. Я проверил это, просто установив точку останова в обработчике.
Этот код пока что (нерелевантные части оставлены для краткости и ясности):
Form1.Designer.cs:
namespace ComboBoxTest
{
partial class Form1
{
// Some designer-generated code here ...
private void InitializeComponent()
{
this.multiColumnComboBox1 = new EWSoftware.ListControls.MultiColumnComboBox();
((System.ComponentModel.ISupportInitialize)(this.multiColumnComboBox1)).BeginInit();
this.SuspendLayout();
//
// multiColumnComboBox1
// leaving away irrelevant lines (like setting TabIndex, Size etc.)
this.multiColumnComboBox1.MaxDropDownItems = 3;
this.multiColumnComboBox1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.multiColumnComboBox1_Scroll);
//
// Form1
// leaving away irrelevant propterty settings (AutoScale, Size etc.)
this.Controls.Add(this.multiColumnComboBox1);
((System.ComponentModel.ISupportInitialize)(this.multiColumnComboBox1)).EndInit();
this.ResumeLayout(false);
}
private EWSoftware.ListControls.MultiColumnComboBox multiColumnComboBox1;
}
}
Form1.cs:
using System.Collections;
using System.Windows.Forms;
namespace ComboBoxTest
{
public partial class Form1 : Form
{
public Form1()
{
ArrayList alTest = new ArrayList();
InitializeComponent();
alTest.Add(new EWSoftware.ListControls.ListItem(1, "1"));
alTest.Add(new EWSoftware.ListControls.ListItem(2, "2"));
alTest.Add(new EWSoftware.ListControls.ListItem(3, "3"));
alTest.Add(new EWSoftware.ListControls.ListItem(4, "4"));
alTest.Add(new EWSoftware.ListControls.ListItem(5, "5"));
multiColumnComboBox1.DataSource = alTest;
}
private void multiColumnComboBox1_Scroll(object sender, ScrollEventArgs e)
{
// This is just a nonsense line which we can set a breakpoint on
multiColumnComboBox1.BackColor = System.Drawing.Color.Black;
}
}
}
В общем случае MultiColumnComboBox работает. Раскрывающаяся часть содержит элементы, как и ожидалось, я могу прокрутить раскрывающуюся часть, выбрать элемент оттуда и т. Д.
Однако точка останова, установленная в последней строке, никогда не срабатывает, а это означает, что прокруткаОбработчик событий никогда не вызывается. Я пробовал использовать разные варианты прокрутки: щелкните мышью на части текстового поля MultiColumnComboBox, чтобы он получил фокус, а затем управляйте колесом мыши там (не имеет никакого смысла, но на всякий случай);переместите указатель мыши на часть списка MultiColumnComboBox и затем используйте колесико мыши, которое заставляет список элементов прокручиваться, как и ожидалось, но по-прежнему не вызывает обработчик события Scroll;используйте клавиши курсора для прокрутки части списка MultiColumnComboBox.
Что бы я ни делал, обработчик события Scroll не вызывается. Я что-то пропустил? Что мне нужно сделать, чтобы поймать это событие прокрутки?