如何在 C# windows 应用程序中使用默认值为 0 的文本 "SELECT" 将第一项插入组合框中

How to insert first item in combo box with text "SELECT" with default value 0 in C# windows application

我正在使用 C# windows 应用程序。我的代码如下

var categoryList = _objCategoryManager.GetAll();
cmbCategory.DisplayMember = "Name";
cmbCategory.ValueMember = "Id";
cmbCategory.DataSource = categoryList;

这里categoryList是IEnumerable类型。我想在 ComboBox 中的 0 索引处插入项目,即。"--SELECT--"

您无法在数据绑定后向 ComboBox 插入项目。取而代之的是之前将项目插入到数据源的副本中,然后进行绑定。

如果 categoryListIEnumerable<T> 而不是 List<T> 那么您应该将其复制到 List<T> 以便您可以在第一个索引处添加默认值:

var categoryList = _objCategoryManager.GetAll().ToList();
categoryList.Insert(0, new Category {Id = -1, Name = "--SELECT--"});

只需将其插入您的列表,例如

var categoryList = _objCategoryManager.GetAll().ToList();
cmbCategory.DisplayMember = "Name";
cmbCategory.ValueMember = "Id";

categoryList.Insert(0, new Category() { Name = "--SELECT--"} );

cmbCategory.DataSource = categoryList;
categoryList.ToList().Find(o => o.ID == Convert.ToInt32(0)).Name = "--SELECT--";

使用 LINQ,您可以找到要更改的对象(绑定后)并修改该项目。

否则,如果您要将对象添加到列表中:

categoryList.ToList().Add(obj); // This should show the new item in the combo box

最终,您的 .GetAll() 方法应该返回第一个“--SELECT--”,而不是之后尝试修改它。