c #databound ComboBox:InvalidArgument =值'1'对'SelectedIndex'无效

时间:2008-11-27 17:40:04

标签: c# winforms combobox

我在设置运行时添加到表单的绑定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;

任何人都可以解释为什么在将控件添加到表单之前我无法从数据源设置所选索引?

1 个答案:

答案 0 :(得分:6)

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

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

BindingContext Class

What is BindingContext