当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《c#databoundComboBox:InvalidArgument=值'1'对'SelectedIndex'无效》经验,为你挑选了1个好方法。

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

当我尝试这个时,我得到错误"InvalidArgument ='1'的值对'SelectedIndex'无效."

private void Form1_Load(object sender, EventArgs e)
        {
            List comboBoxList = 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;

任何人都可以解释为什么我不能从数据源设置选定的索引,直到控件添加到窗体后?



1> Aaron Fische..:

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

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

BindingContext类

什么是BindingContext

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有