【发布时间】:2020-08-30 20:29:47
【问题描述】:
我一直试图在我的列表框中添加不同颜色的项目,结果偶然发现了this Link。我尝试将它实施到我的项目中。但是现在我有一个大问题:列表框的数据源是一个绑定列表,并且有一个工作显示成员和所有东西,但是在插入这个之后(这是颜色更改工作所必需的):
lbx_robots.DrawMode = DrawMode.OwnerDrawFixed;
显示成员似乎被忽略了,我只看到 Robogotchi.Robot 而不是看到项目的名称,所以就像我根本没有显示成员时一样。
大部分问题代码所在的类:
public Robogotchi()
{
InitializeComponent();
//test BEGIN; DELETE LATER
Robot robot = new Robot();
robot.State = Robot.stateofrobot.Einwandfrei;
robot.Name = "test";
int abc = Convert.ToInt32(robot.State);
robotlist.Add(robot);
lbx_robots.DataSource = robotlist;
lbx_robots.DisplayMember = "Name";
lbx_robots.Refresh();
//test END; DELETE LATER
//stuff to change the color of listbox items
//lbx_robots.BackColor = Color.Beige;
lbx_robots.DrawMode = DrawMode.OwnerDrawFixed;
lbx_robots.DrawItem += new DrawItemEventHandler(listBox1_SetColor);
}
这是我运行后出现在我的列表框中的内容: Screenshot of my Listbox with displaymember not working
【问题讨论】:
-
您应该发布
listBox1_SetColor的代码,但我的直觉是您正在遵循您链接的示例。在那种情况下,当您拥有Robot对象时,您不想调用ToString(),而是直接读取其Name属性(当ownerdraw 由您决定时,控件不会这样做)。
标签: c# winforms listbox bindinglist