[英]Display object propery in ComboBox
我有一個自定義對象,其中包含有關項目資源的詳細信息。 屬性是PersonName,Position和Id。如果沒有填寫資源,PersonName將設置為“未確定”。
要將對象添加到組合框,請執行以下操作:
var avail = s.GetUnassignedPrintRoles(SprintId);
foreach (var o in avail)
{
cmbRoles.Items.Add(o);
}
在顯示資源列表時很好。 我的對象有一個重寫的ToString()方法:
public override string ToString()
{
if(AssignedPerson != null)
return ResourceType + " - " + AssignedPerson.Firstname + " " + AssignedPerson.Surname;
return "Unassigned";
}
但是,我有一個屏幕,顯示未分配角色的列表。 因此,我得到一個列表,其中Person為NULL。
但是,我想在ComboxBox中顯示“角色”。
但是,我對象的ToString顯示為“未指定”。 如何使其顯示Role屬性? 有沒有一種方法可以將對象保存在Comboxbox項中,但在顯示中顯示其他屬性,而不是在ToString覆蓋中設置的屬性?
關於我的評論,可能需要像這樣設置ComboBox的DisplayMember
和ValueMember
屬性。
cmbRoles.DisplayMember = "Role";
cmbRoles.ValueMember = "Id";
cmbRoles.DataSource = avail;
這樣,您的ComboBox將顯示角色,但基礎數據將是ID,因此,當您通過SelectedValue
屬性進行SelectedValue
,您將獲得ID。
您是否嘗試過使用DisplayMember屬性來區分顯示值和實際值? 如果這樣做,則應該可以將“角色”設置為組合框上顯示的條目。
cmbRoles.DisplayMember = "" + Role;
cmbRoles.ValueMember = "Id";
cmbRoles.DataSource = avail;
我不確定代碼中的角色是什么,但是您應該能夠從中獲得要點。
您可以使用只讀屬性完全刪除ToString():
public string FullInfo
{
get
{
return ResourceType + " - " + AssignedPerson.Firstname + " " + AssignedPerson.Surname;
}
}
然后
comboBox.DisplayMember = "FullInfo";
comboBox.ValueMember = "Id";
comboBox.DataSource = avail;
您可以執行任何此類的屬性。
加上這個
private void InitializeComponent()
{
cmbRoles.ValueMember = "id";
cmbRoles.DisplayMember = "discription";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.