【发布时间】:2015-01-06 02:59:06
【问题描述】:
我知道如何在运行前更改列表视图的标题颜色。即,在我这样写的代码中:
private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.Graphics.FillRectangle(Brushes.Pink, e.Bounds);
e.DrawText();
}
由于我无法将屏幕截图放在这里,我只是想在这里解释一下。在 WindowsForm 中,我放置了 ListView、ColorDialog 和 ContextMenuStrip。我为 ListView 添加了标题。现在,当用户右键单击 ListView 并选择颜色选项时运行应用程序时,将打开颜色对话框。当用户选择一种颜色并按下确定按钮时,该颜色应应用于 ListView 的标题。这是我的要求。
我试过了,但没有得到任何相关的答案。所以我来到了这里。任何答案将不胜感激。提前致谢。
更改我的代码后:
private void BackColor_Click(object sender, EventArgs e)
{
DialogResult res=colorDialog1.ShowDialog();
if (res==DialogResult.OK)
{
hdr=colorDialog1.Color;
listView1.Update();
}
}
我更改了我的 listView1_DrawColumnHeader 事件,我更改为:
using (Brush hBr=new SolidBrush(hdr))
{
e.Graphics.FillRectangle(hBr, e.Bounds);
e.DrawText();
}
但问题是要花将近 2 分钟才能更改为给定的颜色。你能帮我吗?
【问题讨论】:
-
好吧,如果涉及颜色对话框,则在运行时选择颜色。将颜色保存到 var 并在代码中使用。
-
@Plutonix 好的,我保存在 var.但是我们如何将该变量传递给 listView1_DrawColumnHeader 事件呢?我是初学者,请帮帮我。
-
更新您的帖子以显示您所做/尝试过的事情
-
@Plutonix 你能帮帮我吗,我更新了我的需求
-
当这种情况发生时,LV 中有多少项目?它仅适用于零个或 1 个项目吗?作为 OwnerDraw,您还必须处理
DrawItem,也许瓶颈就在那里。