c# - Winforms Listbox,尽管Drawmode被OwnerDrawFixed,如何使显示成员工作?
问题描述
我一直试图在我的列表框中有不同颜色的项目,并偶然发现了这个 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);
}
这是我运行它后出现在我的列表框中的内容: 我的列表框的屏幕截图,显示成员不工作
解决方案
编辑:我刚刚解决了:在网站的代码中有一行说
.Graphics.DrawString(((ListBox)sender).Items[e.Index].ToString(),
e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
当我将其更改为:
e.Graphics.DrawString((((ListBox)sender).Items[e.Index] as Robot).Name,
e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
有效。
推荐阅读
- c++ - 最大编号 可以存储在 std::vector 中的元素
- php - wordpress 重力表单自动填充/选择当前页面标题
- php - 如何缓存远程视频
- c++ - 将无符号整数存储到 char 数组和宽字符数组中所需的空间
- node.js - 当套接字重新连接时,如何让 socket.io 服务器向特定套接字重新发送消息?
- javascript - 如何通过引用复制对象属性
- python - 错误值错误:日期超出月份的范围
- ruby - 如何访问/解决 Logstash 上的嵌套字段
- ios - 如何在 iOS 中将 Material RadioButton 用作从右到左?
- android - 带有 Dagger Hilt 的 Android 动态功能模块