我在绑定的ComboBox(在Windows窗体上)上设置SelectedIndex时遇到问题,我在运行时添加到表单中,我怀疑有些奇怪的事情发生了.
当我尝试这个时,我得到错误"InvalidArgument ='1'的值对'SelectedIndex'无效."
private void Form1_Load(object sender, EventArgs e) { ListcomboBoxList = new List (); 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;
任何人都可以解释为什么我不能从数据源设置选定的索引,直到控件添加到窗体后?
我的理解是数据绑定由bindingcontext处理,因为这是父表单bindingcontext.因此,在将comboBox添加到表单之前,不会发生数据源绑定.如果将comboBox的bindingcontext设置为窗体绑定上下文,也可以使其工作.
comboBox1.BindingContext = this.BindingContext; comboBox1.DataSource = comboBoxList; comboBox1.SelectedIndex = 1; this.Controls.Add(comboBox1);
BindingContext类
什么是BindingContext