昨天我想到了一个有趣的想法。假设我们有一个类someObject
:
class someObject
{
public int id;
public string name;
}
并且假设我们有,我们需要用位于某些工作表中的comboBox
相同内容来填充它,即 someObject
这样做:
foreach (var item in list)
{
comboBox.Items.Add(item);
}
如果你这样做,那么comboBox
每个元素都会有这样的东西:
Form+someObject
好吧,让我们走另一条路。让我们这样填写:
foreach (var item in list)
{
comboBox.Items.Add(item.name);
}
'e 现在将comboBox
显示元素的名称name
。现在,从 中选择任何元素后comboBox
,要获取特定的工作表元素,您需要执行以下操作:
someObject currentItem;
foreach (var item in list)
{
if(item.name == comboBox.Text)
{
currentItem = item;
}
}
好的。这一切都有效。但是有一个“但是”:如果工作表中存在同名的对象,那么经过上述相同的操作,我们将不会总是得到我们需要的对象。我想说循环foreach
将遍历整个工作表,检查每个元素的名称,comboBox.Text
并将最后检查的值存储在变量中。
如果你这样做:
someObject currentItem;
foreach (var item in list)
{
if(item.name == comboBox.Text)
{
currentItem = item;
break;
}
}
那么只有第一个值将被存储。
所以这就是我的全部内容:是否有任何选项,以便当您添加这样的元素时
foreach (var item in list)
{
comboBox.Items.Add(item);
}
只显示comboBox
名字?
只需设置属性
您可以使用该设计
但是,在这种情况下,您需要将字段替换为属性:
还希望将 PascalCase 用于公共属性:
Id
和Name
类名:SomeObject
。注意:还要注意
ValueMember
组合框属性。