我有一个绑定了数据表的列表框.数据表有两列,“ CMM”和“ Location”. “ CMM”是一位/两位数字整数,用作列表框的DisplayMember,而“ Location”是一位数字整数,等于1或2.如果Location列等于2,我想添加一个星号显示在列表框中.我试图避免为列表框使用drawitem.
解决方法:
您可以使用ListBox.Format事件有条件地更改显示的值
编辑:
添加了一个示例:
在设计时,您将需要创建一个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"];
}
}