C# 如何将字符追加到列表框显示成员

本文关键字:列表 显示 成员 追加 字符 | 更新日期: 2023-09-27 18:31:58

我有一个列表框,上面绑定了一个数据表。数据表有两列:"CMM"和"位置"。"CMM"是一个一/两位整数,用作列表框的显示成员,"位置"是一个数字整数,等于 1 或 2。如果"位置"列等于 2,我想在列表框中显示的内容中添加一个星号。我试图避免对列表框使用绘图项。

C# 如何将字符追加到列表框显示成员

可以使用 ListBox.Format 事件有条件地更改显示的值

编辑:添加了一个示例:

在设计时,您需要创建一个列表框控件,并将 DisplayMember 属性分配给 CMM

private void Form1_Load(object sender, EventArgs e) {
    DataTable dt = InitData();
    listBox1.DataSource = dt;
}
private static DataTable InitData() {
    DataTable dt = new DataTable();
    dt.Columns.Add("CMM", typeof(int));
    dt.Columns.Add("Location", typeof(int));
    DataRow row = dt.NewRow();
    row["CMM"] = 25;
    row["Location"] = 1;
    dt.Rows.Add(row);
    row = dt.NewRow();
    row["CMM"] = 26;
    row["Location"] = 2;
    dt.Rows.Add(row);
    row = dt.NewRow();
    row["CMM"] = 27;
    row["Location"] = 21;
    dt.Rows.Add(row);
    return dt;
}
private void listBox1_Format(object sender, ListControlConvertEventArgs e) {
    //We assigned dataTable with DataRows, but e.ListItem is DataRowView ¿?
    DataRowView rowView = e.ListItem as DataRowView;
    if (rowView != null) {
        e.Value = ((int)rowView.Row["Location"] == 2) ? "*" + rowView.Row["CMM"].ToString() : rowView.Row["CMM"];
    }
}