我在运行时添加到窗体的绑定(bind) 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;
谁能解释为什么在将控件添加到表单之前我不能从数据源设置选定的索引?
最佳答案
我的理解是数据绑定(bind)通常由绑定(bind)上下文处理,这是父表单绑定(bind)上下文。因此,在将组合框添加到表单之前,不会发生数据源绑定(bind)。 如果您将组合框的绑定(bind)上下文设置为表单绑定(bind)上下文,您也可以使它起作用。
comboBox1.BindingContext = this.BindingContext;
comboBox1.DataSource = comboBoxList;
comboBox1.SelectedIndex = 1;
this.Controls.Add(comboBox1);
关于C# 数据绑定(bind) ComboBox : InvalidArgument=Value of '1' is not valid for 'SelectedIndex' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/324331/