【问题标题】:c# databound ComboBox : InvalidArgument=Value of '1' is not valid for 'SelectedIndex'c# databound ComboBox : InvalidArgument=Value of '1' 对 'SelectedIndex' 无效
【发布时间】:2008-11-27 17:40:04
【问题描述】:

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

当我尝试这个时,我收到错误“InvalidArgument=Value of '1' is not valid for '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;

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

【问题讨论】:

    标签: c# winforms combobox


    【解决方案1】:

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

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

    BindingContext Class

    What is BindingContext

    【讨论】:

    • 它不适用于winforms,以为这是一个asp.net控件
    • 感谢您指出歧义 - 我已经澄清了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 2022-12-03
    • 1970-01-01
    相关资源
    最近更新 更多