指定来自drawwitemeventhandler的列表框项的颜色

本文关键字:列表 颜色 drawwitemeventhandler | 更新日期: 2023-09-27 18:04:13

下面是我指定ListBox特定行颜色的代码:

private void listBox1_DrawItem(object sender, DrawItemEventArgs e, Color color) {
    e.DrawBackground();
    Graphics g = e.Graphics;
    g.FillRectangle(new SolidBrush(Color.Silver), e.Bounds);
    g.DrawString(Text, e.Font, new SolidBrush(color), e.Bounds);
    e.DrawFocusRectangle();
}

我希望能够将color传递给这个方法,但不太知道如何告诉该方法在调用时使用哪种颜色。我怎样才能做到这一点呢?

指定来自drawwitemeventhandler的列表框项的颜色

只需使用类的私有字段。或者,如果颜色应该基于正在绘制的特定项(典型情况),则使用e.Index来知道正在绘制的是哪个项。注意-1

我希望我没有误解你的问题,但不是在drawwitemeventargs参数的背景和前景颜色已经可用?

如果是这样,就不需要添加第三个参数(color)。

另外,在我看来,这也不是一个好的做法,因为你会注意到(通过查看整个应用程序中的其他事件处理程序),.net将所有事件标准化为具有2个参数,一个"sender"和一个可以是任何类型的"e"参数。

但是要仔细检查drawwitemeventargs参数。我相信颜色是可以设置的。

谢谢