2013-10-12 3 views
1

У меня проблемы здесь, когда я создаю поле со списком в кодировке, я обнаружил, что не могу установить 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(""); 
    } 
} 
+1

Это, кажется, опечатка в примере кода, я думаю, что вы написали 'comboBox2' вместо' comboBox1' –

+0

Хаха, ошибка опечатка, спасибо @Benoit Blanchon, я уже исправьте его – overshadow

ответ

2

Просто установите ComboBox.BindingContext на экземпляр фиктивного кода.

string[] data = { "a", "b", "c" }; 
comboBox1.BindingContext = new BindingContext(); 
comboBox1.DataSource = data; 
comboBox1.SelectedIndex = 2; 

См ComboBox.DataSource Property и BindingContext Class

+0

Спасибо @Benoit Blanchon, он работает. – overshadow

 Смежные вопросы

  • Нет связанных вопросов^_^