C#如何将字符附加到listbox DisplayMember?

C#如何将字符附加到listbox DisplayMember?,c#,.net,winforms,C#,.net,Winforms,我有一个绑定了datatable的列表框。datatable有两列,“CMM”和“Location”。“CMM”是一个1/2位数的整数,用作列表框的DisplayMember,“Location”是一个1位数的整数,等于1或2。如果位置列等于2,我想在列表框中显示的内容中添加一个星号。我试图避免在列表框中使用drawitem 您可以使用事件有条件地更改显示的值 编辑: 添加了一个示例: 在设计时,您需要创建一个ListBox控件,并将DisplayMember属性分配给CMM private v

我有一个绑定了datatable的列表框。datatable有两列,“CMM”和“Location”。“CMM”是一个1/2位数的整数,用作列表框的DisplayMember,“Location”是一个1位数的整数,等于1或2。如果位置列等于2,我想在列表框中显示的内容中添加一个星号。我试图避免在列表框中使用drawitem

您可以使用事件有条件地更改显示的值

编辑: 添加了一个示例:

在设计时,您需要创建一个ListBox控件,并将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"];
    }
}

您可以绑定到
列表
并使用属性作为displaymember吗?谢谢您的建议。我的代码中有format事件,其中有一个foreach循环,循环遍历绑定到listbox的datatable。它检查每一行的位置是否等于0,但我不确定接下来是什么。例如:
if(datatable[“Location”].ToString()=“0”){这里是什么?}
(试图编辑我以前的评论,但它不允许我)我尝试放置
if(r[“Location”].ToString()=“0”){lbAllCMM.FormatString=r[“Location”].ToString()+“*”}
,但这会在每行添加星号,不仅仅是位置等于0的行。我已经添加了一个我认为您希望实现的工作示例。非常感谢!这是非常有帮助的,而且正是我需要做的。现在我只需要学习它是如何工作的,这样我就可以在将来使用它了。