나는 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
속성 값을 변경할 수 없습니다.
'e.Bounds'는 변경할 수 없으며 항목의 경계를 알려주는 읽기 전용 속성입니다. 또한 '도형을 선택할 수 없습니다'라는 것은 무엇을 의미합니까? 당신이 그들을 선택하면 어떻게됩니까? 그들이 선택되지 않았다는 것을 어떻게 알 수 있습니까? – Rotem
로템이 말한 것에 대해 자세히 설명하기 위해 개별 항목의 상태를 처리하지 않으므로 항목을 선택하고 있지만 그리지 않은 상태에서 효과를 볼 수는 없습니다. 선택이 자동으로 일어나지 않으므로 그려야합니다. –
'SelectEntireRow' 속성을'true'로 설정 했습니까? – ja72