首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Visual C# 2005 讓 ComboBox 顯示多欄位資料:Format 事件與複合格式化完整實作

     編輯:關於C語言

核心技巧:處理 Format 事件自訂顯示文字

ComboBox 預設僅顯示 DisplayMember 單一欄位。透過 Format 事件,可在繫結每一項目前動組合多欄位文字。

範例 1:DataTable 繫結 — 姓名、性別、生日、薪資四欄合併


private void comboBox1_Format(object sender, ListControlConvertEventArgs e)
{
    DataRowView row = e.ListItem as DataRowView;
    if (row != null)
    {
        e.Value = string.Format("{0} - {1} - {2:yyyy/MM/dd} - {3:NT$#,##0.00}",
            row["姓名"], row["性別"], row["出生日期"], row["目前薪資"]);
    }
}

範例 2:CultureInfo 集合繫結 — 顯示 IETF 標籤與顯示名稱

ComboBox 多欄位顯示畫面

圖 3-45:CH3_DemoForm029 執行畫面

載入文化資訊集合


private void Form_Load(object sender, EventArgs e)
{
    culturesCB.ValueMember = "LCID";
    culturesCB.DataSource = CultureInfo.GetCultures(CultureTypes.FrameworkCultures);
}

Format 事件組合顯示


private void culturesCB_Format(object sender, ListControlConvertEventArgs e)
{
    CultureInfo ci = e.ListItem as CultureInfo;
    if (ci != null)
        e.Value = string.Format("{0} : {1}", ci.IetfLanguageTag, ci.DisplayName);
}

關鍵觀念

  • ListControlConvertEventArgs.ListItem 為原始資料項目 (DataRowView、CultureInfo 等)
  • e.Value 指定 **下拉清單中顯示的文字**,不影響 ValueMember 實際值
  • 複合格式化 string.Format 支援日期/數值/貨幣等標準/自訂格式字串
  • 僅需設定 ValueMember + DataSource + Format 事件,**無需自訂繪製**
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved