向ComboBox添加项目

4

我有一个ComboBox控件。

我将这个控件绑定到了DataSet表格上。

以下是代码:

comboBox.Items.Add(("Select"));
comboBox.DataSource = DataSet.ColorTable;
comboBox.DisplayMember = DataSet.ColorTable.ColorNameColumn.ColumnName;
comboBox.ValueMember = DataSet.ColorTable.ColorIDColumn.ColumnName;

我得到的结果是:

输入图像描述

我想在列表顶部显示SELECT:这个词。因此,我需要向comboBox控件添加一个附加项。以下是我的实现方式:
cmbCategory.Items.Add(("Select"));

但结果仍然与上面相同。我只得到有颜色但列表顶部没有“SELECT:”这个词的结果。
您有任何想法如何将该字符串“SELECT:”添加到ComboBox控件并将其设置为此字符串的ValueMember吗?

5
不能混合使用“Items”和“DataSource”。 - SLaks
Windows Forms?ASP.Net?WPF? - Saw
将"Select"添加到ColorTable中。 - Magnus
似乎有两个不同的ComboBox:cmbCategory comboBox。 - paparazzo
5个回答

7
请使用Insert方法代替。
cmbCategory.Items.Insert(0, "Select");

注意:将此代码放在数据绑定之后。


3
不行,你会得到“System.ArgumentException”异常。数据源必须与项保持一致,不能混合使用。另外,通常使用一个项目来指示用户选择组合框中的其他项目是一个不好的想法。提问者应该包括一个单独的标签或文本来告知用户选择是必需的,而将组合框项目保持干净。 - vulkanino
这不再是一个有效的答案了。 - ChangeWorld
@ChangeWorld,请问您能否分享更新后的版本吗?因为我看到文档中仍然存在插入方法,其“Item”属性是“ObjectCollection”类型。 https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.combobox.items?view=netcore-3.1 - Kundan Singh Chouhan
@KundanSinghChouhan 当我尝试在数据绑定后插入时,我会收到以下错误:System.ArgumentException: Cannot modify the collection of elements when the DataSource property is set,但我仍在网上寻找正确的答案。只是想让你知道它正在抛出一个错误。 - ChangeWorld

3
你可以先把颜色集合添加到arraydataset中(如果你是从数据库中获取它们),然后添加“select”项,最后添加array的每个元素或dataset的一列。
Form_Load函数和每次颜色集合数组或数据库发生更改时执行此操作。

2
            //This will set Display member and value member
            comboBox.DisplayMember = "ColorName";
            comboBox.ValueMember = "ColorCode";

          //This will add a new row to table in binded dataset
            DataRow dr = dal.MyProperty_dsColors.Tables["ColorInfo"].NewRow();
            dr["ColorName"] = "Select Color"; //SomeName
            dr["ColorCode"] = 001; //Some ID
            dal.MyProperty_dsColors.Tables["ColorInfo].Rows.Add(dr); 

           //binding dataSource
            comboBox.DataSource = dal.MyProperty_dsColors.Tables["ColorInfo"];

1
除了在弹出窗口到达时“选择”ComboBox外,还可以帮助您设置ComboBox而不需要“选择”它...选择您的ComboBox,在属性选项卡下,选择Appearance-> Drop Down Style并选择DropDownList。

0

如果我们想要手动添加值到combobox(例如整数),可以使用for循环来实现:

// sample code
int lower=1;
int higher=500;

for (int i=lower; i<=higher; i++)
 combo_values.Items.Add(i.ToString());

请注意,您必须使用 int.Parse(combo_values.Text) 命令来读取一个值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接