2

我这里有一个问题,当我在编码中创建一个组合框时,我发现我无法在与数据源绑定后立即设置 selectedValue。下面的编码用于帮助我解释问题。

我想我已经找到了问题,问题可能是由于同步引起的。这意味着这行代码(comboBox1.SelectedIndex = 2)将在组合框数据源正确绑定之前执行,因此组合框在执行comboBox1.SelectedIndex = 2时找不到数据并产生错误。如果我错了,请纠正我。

我的解决方案是在 comboBox1.DataSource = data 之后立即放置一个 while 循环,以确保组合框在进入下一行代码之前正确绑定。我确信这不是一个好方法。

还有其他更好的解决方案吗?提前致谢。

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("");
    }
}
4

1 回答 1

4

只需将 设置ComboBox.BindingContext为虚拟实例。

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

请参阅ComboBox.DataSource 属性BindingContext 类

于 2013-10-12T08:22:00.133 回答