gpt4 book ai didi

c# - 为什么选定的项目没有显示在我的所有者绘制的 ListView 控件中?

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:04 25 4
gpt4 key购买 nike

我正在制作一个所有者绘制的 ListView ,我在其中绘制 ListView 内的形状。我使用 Listview_DrawItem 事件完成了此操作。我的问题是,当我运行该应用程序时,我无法选择在 ListView 中绘制的形状。

private void AddItem(ListView lvw, string Shape_name, Color Shape_color)
{
// Make the item.
ListViewItem item = new ListViewItem(Shape_name);

// Save the Shape object in the Tag property.
Shapes myShape = new Shapes(Shape_name,Shape_color);

item.Tag = myShape;
item.SubItems[0].Name ="ShapeName";

// Add subitems so they can draw.
item.SubItems.Add("ShapeColor");

// Add the item to the ListView.
lvw.Items.Add(item);
}


// Draw the item. In this case, the Shape_name's logo.
private void lvwServers_DrawItem(object sender, DrawListViewItemEventArgs e)
{

// Get the ListView item and the Shapes object.
ListViewItem item = e.Item;

Shapes myShape = item.Tag as Shapes;

// Clear.
e.DrawBackground();

// Smoothing mode for blur free drawing
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

Rectangle rect = new Rectangle(e.Bounds.Left + 10, e.Bounds.Top + 10, 41, 41);


using (SolidBrush br = new SolidBrush(myShape.ShapeColor))
{

e.Graphics.FillRectangle(br, rect);
}

e.Graphics.DrawRectangle(Pens.Black, rect);

e.Graphics.ResetTransform();
e.DrawFocusRectangle();

此外,我无法更改 e.bound 属性的值。

最佳答案

您可以将 DrawItem 事件处理程序中的绘图代码基于 DrawListViewItemEventArgs 参数中可用的 e.State 值。

bool isSelected = e.State == ListViewItemStates.Selected;

这样您就可以决定在选择项目时要更改绘制项目的哪些元素。

关于c# - 为什么选定的项目没有显示在我的所有者绘制的 ListView 控件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12367696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com