ListView.DrawItem イベント
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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 処理してテキスト値などの個々のサブ項目の要素を描画できます。 また、2 つのイベントのうち 1 つだけを ListView 使用してコントロール内のすべての項目を描画することもできますが、これはあまり便利ではない場合があります。 詳細ビューで列ヘッダーを描画するには、 イベントを処理する DrawColumnHeader 必要があります。
注意
基になる Win32 コントロールのバグのため、マウス ポインターが行の上を移動すると、 DrawItem 詳細ビューで 1 行に 1 回イベントが付随 DrawSubItem することなくイベントが発生し、イベント ハンドラーに DrawSubItem 描画されたカスタム背景 DrawItem によってイベント ハンドラーに描画されたものが描画されます。 余分なイベントが OwnerDraw 発生したときに各行を無効にする回避策については、リファレンス トピックの例を参照してください。 別の回避策として、すべてのカスタム描画コードをイベント ハンドラーに DrawSubItem 配置し、値が 0 の場合にのみアイテム全体 (サブ項目を含む) の背景を DrawListViewSubItemEventArgs.ColumnIndex 描画します。
イベントの処理の詳細については、「処理とイベントの発生」を参照してください。
適用対象
こちらもご覧ください
.NET