У меня проблемы здесь, когда я создаю поле со списком в кодировке, я обнаружил, что не могу установить selectedValue сразу после связывания с источником данных , Ниже приведена кодировка, которая поможет мне объяснить проблему.Невозможно установить selectedValue в исходном состоянии при программном объявлении combobox в C#
Я думаю, что я уже нашел проблему, проблема может быть связана с синхронным. Это означает, что эта строка кода (comboBox1.SelectedIndex = 2) будет выполняться до того, как источник данных combobox будет правильно привязан, поэтому combobox не смог найти данные, когда comboBox1.SelectedIndex = 2 выполняется и генерирует ошибки. Если я ошибаюсь, исправьте меня.
Мое решение помещает цикл while сразу после comboBox1.DataSource = data, чтобы убедиться, что combobox правильно связывается, прежде чем он сможет перейти к следующей строке кода. Я уверен, что это не очень хорошо.
Есть ли другие решения для этого? Заранее спасибо.
public partial class Form2 : Form
{
private ComboBox comboBox1 = new ComboBox();
public Form2()
{
InitializeComponent();
string[] data = { "a", "b", "c" };
comboBox1.DataSource = data;
//This line of code is used to confirm the data source
//is bind to the combo box
while (comboBox1.DataSource == null) ;
comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;
this.Controls.Add(comboBox1);
comboBox1.SelectedIndex = 2;
}
void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show("");
}
}
Это, кажется, опечатка в примере кода, я думаю, что вы написали 'comboBox2' вместо' comboBox1' –
Хаха, ошибка опечатка, спасибо @Benoit Blanchon, я уже исправьте его – overshadow