首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

WinForms ComboBox 顯示多欄位:自訂屬性綁定 DisplayMember

     編輯:程式設計綜合問答

需求

實體類 Room 有 RoomNo、BedCount 兩屬性,ComboBox 需顯示「101室(2床)」格式。

方案一:唯讀計算屬性(推薦)

public class Room {
    public string RoomNo { get; set; }
    public int BedCount { get; set; }
    public string DisplayText => $"{RoomNo}({BedCount}床)"; // C# 6+ expression-bodied
}

綁定:comboBox.DisplayMember = "DisplayText";

方案二:ToString 覆寫

public override string ToString() => $"{RoomNo}({BedCount}床)";

綁定:comboBox.DisplayMember = "";(空字串會自動呼叫 ToString)。

方案三:匿名類別投影(不修改實體)

var displayList = rooms.Select(r => new { 
    Room = r, 
    Text = $"{r.RoomNo}({r.BedCount}床)" 
}).ToList();
comboBox.DataSource = displayList;
comboBox.DisplayMember = "Text";
comboBox.ValueMember = "Room";

取得選中實體

Room selected = (Room)comboBox.SelectedValue; // 方案三
// 或
Room selected = (Room)comboBox.SelectedItem; // 方案一/二
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved