Definiowanie zdarzenia w kontrolkach formularzy systemu Windows
Aby uzyskać szczegółowe informacje na temat definiowania zdarzeń niestandardowych, zobacz Events. Jeśli zdefiniujesz zdarzenie, które nie ma żadnych skojarzonych danych, użyj typu podstawowego dla danych zdarzeń, EventArgsi użyj EventHandler jako delegata zdarzenia. Pozostaje tylko zdefiniować członka zdarzenia i chronioną metodę On
EventName, która zgłasza zdarzenie.
Poniższy fragment kodu pokazuje, jak kontrolka niestandardowa FlashTrackBar
definiuje zdarzenie niestandardowe, ValueChanged
. Pełny kod dla przykładu FlashTrackBar
można znaleźć w Jak: Utworzyć kontrolkę Windows Forms, która pokazuje postęp.
Option Explicit
Option Strict
Imports System
Imports System.Windows.Forms
Imports System.Drawing
Public Class FlashTrackBar
Inherits Control
' The event does not have any data, so EventHandler is adequate
' as the event delegate.
' Define the event member using the event keyword.
' In this case, for efficiency, the event is defined
' using the event property construct.
Public Event ValueChanged As EventHandler
' The protected method that raises the ValueChanged
' event when the value has actually
' changed. Derived controls can override this method.
Protected Overridable Sub OnValueChanged(e As EventArgs)
RaiseEvent ValueChanged(Me, e)
End Sub
End Class
using System;
using System.Windows.Forms;
using System.Drawing;
public class FlashTrackBar : Control {
// The event does not have any data, so EventHandler is adequate
// as the event delegate.
private EventHandler onValueChanged;
// Define the event member using the event keyword.
// In this case, for efficiency, the event is defined
// using the event property construct.
public event EventHandler ValueChanged {
add {
onValueChanged += value;
}
remove {
onValueChanged -= value;
}
}
// The protected method that raises the ValueChanged
// event when the value has actually
// changed. Derived controls can override this method.
protected virtual void OnValueChanged(EventArgs e)
{
onValueChanged?.Invoke(this, e);
}
}
Zobacz też
.NET Desktop feedback