ListBox.DrawItem 事件
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
發生於主控描繪 ListBox 的視覺外觀變更時。
public:
event System::Windows::Forms::DrawItemEventHandler ^ DrawItem;
public event System.Windows.Forms.DrawItemEventHandler DrawItem;
public event System.Windows.Forms.DrawItemEventHandler? DrawItem;
member this.DrawItem : System.Windows.Forms.DrawItemEventHandler
Public Custom Event DrawItem As DrawItemEventHandler
事件類型
範例
下列程式碼範例示範如何建立擁有者繪製 ListBox 的專案。 程式碼會 DrawMode 使用 屬性來指定繪製的專案是固定大小的,而 DrawItem 事件則會執行每個專案的繪圖到 ListBox 。 此範例程式碼會使用傳遞為事件處理常式參數之 DrawItemEventArgs 類別的屬性和方法,來繪製專案。 這個範例會要求 ListBox 已將呼叫 listBox1
的控制項新增至表單,而且 DrawItem 該事件是由範例程式碼中定義的事件處理常式所處理。 此範例也需要以 「Apple」、「Orange」 和 「Plum」 文字將該順序的專案新增至 ListBox 。
private ListBox ListBox1 = new ListBox();
private void InitializeListBox()
{
ListBox1.Items.AddRange(new Object[]
{ "Red Item", "Orange Item", "Purple Item" });
ListBox1.Location = new System.Drawing.Point(81, 69);
ListBox1.Size = new System.Drawing.Size(120, 95);
ListBox1.DrawMode = DrawMode.OwnerDrawFixed;
ListBox1.DrawItem += new DrawItemEventHandler(ListBox1_DrawItem);
Controls.Add(ListBox1);
}
private void ListBox1_DrawItem(object sender,
System.Windows.Forms.DrawItemEventArgs e)
{
// Draw the background of the ListBox control for each item.
e.DrawBackground();
// Define the default color of the brush as black.
Brush myBrush = Brushes.Black;
// Determine the color of the brush to draw each item based
// on the index of the item to draw.
switch (e.Index)
{
case 0:
myBrush = Brushes.Red;
break;
case 1:
myBrush = Brushes.Orange;
break;
case 2:
myBrush = Brushes.Purple;
break;
}
// Draw the current item text based on the current Font
// and the custom brush settings.
e.Graphics.DrawString(ListBox1.Items[e.Index].ToString(),
e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
// If the ListBox has focus, draw a focus rectangle around the selected item.
e.DrawFocusRectangle();
}
Private WithEvents ListBox1 As New ListBox()
Private Sub InitializeListBox()
ListBox1.Items.AddRange(New Object() _
{"Red Item", "Orange Item", "Purple Item"})
ListBox1.Location = New System.Drawing.Point(81, 69)
ListBox1.Size = New System.Drawing.Size(120, 95)
ListBox1.DrawMode = DrawMode.OwnerDrawFixed
Controls.Add(ListBox1)
End Sub
Private Sub ListBox1_DrawItem(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DrawItemEventArgs) _
Handles ListBox1.DrawItem
' Draw the background of the ListBox control for each item.
e.DrawBackground()
' Define the default color of the brush as black.
Dim myBrush As Brush = Brushes.Black
' Determine the color of the brush to draw each item based on
' the index of the item to draw.
Select Case e.Index
Case 0
myBrush = Brushes.Red
Case 1
myBrush = Brushes.Orange
Case 2
myBrush = Brushes.Purple
End Select
' Draw the current item text based on the current
' Font and the custom brush settings.
e.Graphics.DrawString(ListBox1.Items(e.Index).ToString(), _
e.Font, myBrush, e.Bounds, StringFormat.GenericDefault)
' If the ListBox has focus, draw a focus rectangle around _
' the selected item.
e.DrawFocusRectangle()
End Sub
備註
這個事件是由擁有者繪製 ListBox 的 使用。 只有當 屬性設定為 DrawMode.OwnerDrawFixed
或 DrawMode.OwnerDrawVariable
時, DrawMode 才會引發 事件。 您可以使用這個事件來執行 在 中 ListBox 繪製專案所需的工作。 如果屬性設定為 DrawMode.OwnerDrawVariable
) 時, DrawMode (變數大小的專案, MeasureItem 則會在繪製專案之前引發 事件。 您可以為 MeasureItem 事件建立事件處理常式,以指定要在事件事件處理常式 DrawItem 中繪製的專案大小。
如需處理事件的詳細資訊,請參閱 處理和引發事件。