Définition d'un événement dans les contrôles Windows Forms
Pour plus d’informations sur la définition d’événements personnalisés, consultez Événements. Si vous définissez un événement qui ne comporte pas de données associées, utilisez le type de base des données d'événement EventArgs, puis utilisez EventHandler en tant que délégué d'événement. Tout ce qui reste à faire consiste à définir un membre d’événement et une méthode EventName protégée On
qui déclenche l’événement.
Le fragment de code suivant montre comment le contrôle personnalisé FlashTrackBar
définit l'événement personnalisé ValueChanged
. Pour obtenir le code complet de l’exemple FlashTrackBar
, consultez la procédure : créer un contrôle Windows Forms qui affiche la progression.
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);
}
}
Voir aussi
.NET Desktop feedback