ListView.DrawItem Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
public:
event System::Windows::Forms::DrawListViewItemEventHandler ^ DrawItem;
public event System.Windows.Forms.DrawListViewItemEventHandler DrawItem;
public event System.Windows.Forms.DrawListViewItemEventHandler? DrawItem;
member this.DrawItem : System.Windows.Forms.DrawListViewItemEventHandler
Public Custom Event DrawItem As DrawListViewItemEventHandler
Тип события
Примеры
В следующем примере кода представлена реализация обработчика DrawItem событий. Полный пример см. в справочном OwnerDraw разделе.
// Draws the backgrounds for entire ListView items.
private void listView1_DrawItem(object sender,
DrawListViewItemEventArgs e)
{
if ((e.State & ListViewItemStates.Selected) != 0)
{
// Draw the background and focus rectangle for a selected item.
e.Graphics.FillRectangle(Brushes.Maroon, e.Bounds);
e.DrawFocusRectangle();
}
else
{
// Draw the background for an unselected item.
using (LinearGradientBrush brush =
new LinearGradientBrush(e.Bounds, Color.Orange,
Color.Maroon, LinearGradientMode.Horizontal))
{
e.Graphics.FillRectangle(brush, e.Bounds);
}
}
// Draw the item text for views other than the Details view.
if (listView1.View != View.Details)
{
e.DrawText();
}
}
' Draws the backgrounds for entire ListView items.
Private Sub listView1_DrawItem(ByVal sender As Object, _
ByVal e As DrawListViewItemEventArgs) _
Handles listView1.DrawItem
If Not (e.State And ListViewItemStates.Selected) = 0 Then
' Draw the background for a selected item.
e.Graphics.FillRectangle(Brushes.Maroon, e.Bounds)
e.DrawFocusRectangle()
Else
' Draw the background for an unselected item.
Dim brush As New LinearGradientBrush(e.Bounds, Color.Orange, _
Color.Maroon, LinearGradientMode.Horizontal)
Try
e.Graphics.FillRectangle(brush, e.Bounds)
Finally
brush.Dispose()
End Try
End If
' Draw the item text for views other than the Details view.
If Not Me.listView1.View = View.Details Then
e.DrawText()
End If
End Sub
Комментарии
Это событие позволяет настроить внешний ListView вид элемента управления с помощью документа владельца. Он возникает только в том случае, если свойству OwnerDraw присвоено значение true
. Дополнительные сведения о рисовании владельца см. в разделе справочника по свойствам OwnerDraw .
Событие DrawItem может возникнуть для каждого ListView элемента. Если свойству View присвоено значение View.Details, DrawSubItem также происходят события и DrawColumnHeader . В этом случае можно обработать DrawItem событие для рисования элементов, общих для всех элементов, таких как фон, и обработать DrawSubItem событие для рисования элементов для отдельных вложенных элементов, таких как текстовые значения. Вы также можете рисовать все элементы в элементе ListView управления, используя только одно из двух событий, хотя это может быть менее удобным. Чтобы нарисовать заголовки столбцов в представлении сведений, необходимо обработать DrawColumnHeader событие .
Примечание
Из-за ошибки в базовом элементе управления DrawItem Win32 событие происходит без сопутствующих DrawSubItem событий один раз в строке в представлении сведений, когда указатель мыши перемещается над строкой, в результате чего все, что окрашено в DrawSubItem обработчике событий, будет закрашено пользовательским фоном, нарисованным в обработчике DrawItem событий. См. пример в справочном OwnerDraw разделе для обходного решения, которое делает каждую строку недействительной при возникновении дополнительного события. Альтернативным решением является размещение всего пользовательского кода рисования в DrawSubItem обработчике событий и рисование фона для всего элемента (включая вложенные элементы) только в том случае, если DrawListViewSubItemEventArgs.ColumnIndex значение равно 0.
Дополнительные сведения об обработке событий см. в разделе Обработка и вызов событий.