C# 数据绑定(bind) ComboBox : InvalidArgument=Value of '1' is not valid for 'SelectedIndex'

标签 c# winforms combobox

我在运行时添加到窗体的绑定(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);

BindingContext Class

What is BindingContext

关于C# 数据绑定(bind) ComboBox : InvalidArgument=Value of '1' is not valid for 'SelectedIndex' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/324331/

相关文章:

forms - 在 Gwt-Ext 中重新渲染 combox 存储

绑定(bind)到枚举时的 WPF ComboBox SelectedItem

c# - Entity Framework 将导航属性映射为标量属性

c# - 对排序列表进行分组而不影响 linq 中的排序

c# - .NET应用程序将作为控制台应用程序运行,但不能作为Windows窗体运行,调试工作

c# - 禁用事件从其代码中自行触发

c# - 在 C# 中设置和更改 SQLite 数据库密码

c# - 如何在通用文本 block 中显示所有验证错误消息

c# - .NET - RichTextBox 中的长行在 3,510 个字符后换行

java - Vaadin:无法在旧 Reindeer 主题中调整 ComboBox 的大小?