5

我在运行时添加到表单的绑定 ComboBox(在 Windows 表单上)上设置 SelectedIndex 时遇到问题,我怀疑发生了一些奇怪的事情。

当我尝试这个时,我收到错误“InvalidArgument='1' 的值对'SelectedIndex' 无效。”

private void Form1_Load(object sender, EventArgs e)
        {
            List<string> comboBoxList = new List<string>();
            comboBoxList.Add("Apples");
            comboBoxList.Add("Oranges");
            comboBoxList.Add("Pears");

            ComboBox comboBox1 = new ComboBox();
            comboBox1.DataSource = comboBoxList;
            comboBox1.SelectedIndex = 1;
            this.Controls.Add(comboBox1);
        }

但是,如果我直接将项目添加到 ComboBox 中,则没有问题,如下所示:

comboBox1.Add("Apples");

此外,如果我在设置 SelectedIndex 之前将控件添加到表单中,也没有问题,如下所示:

ComboBox comboBox1 = new ComboBox();
this.Controls.Add(comboBox1);
comboBox1.DataSource = comboBoxList;
comboBox1.SelectedIndex = 1;

谁能解释为什么在将控件添加到表单之前我不能从数据源设置选定的索引?

4

1 回答 1

6

我的理解是数据绑定通常由绑定上下文处理,这是父表单绑定上下文。因此,在将组合框添加到表单之前,不会发生数据源绑定。如果您将组合框的 bindingcontext 设置为表单绑定上下文,您也可以让它工作。

comboBox1.BindingContext = this.BindingContext;
comboBox1.DataSource = comboBoxList;
comboBox1.SelectedIndex = 1;
this.Controls.Add(comboBox1);

BindingContext 类

什么是 BindingContext

于 2008-11-27T18:01:29.043 回答