j'ai vu du code dans lequel les gens passent des paramètres via la propriété commandParameter de web control.then à quoi sert eventargs.
Cela peut être utile si vous avez la même méthode EventHandler pour différents boutons. Exemple, supposons que votre balisage ressemble à ceci:
<asp:Button ID="button1" runat="server" CommandArgument="MyVal1"
CommandName="ThisBtnClick" OnClick="MyBtnHandler" />
<asp:Button ID="button2" runat="server" CommandArgument="MyVal2"
CommandName="ThatBtnClick" OnClick="MyBtnHandler" />
Vous pouvez avoir le même gestionnaire d'événements pour les deux boutons et les différencier en fonction du CommandName:
protected void MyBtnHandler(Object sender, EventArgs e)
{
Button btn = (Button)sender;
switch (btn.CommandName)
{
case "ThisBtnClick":
DoWhatever(btn.CommandArgument.ToString());
break;
case "ThatBtnClick":
DoSomethingElse(btn.CommandArgument.ToString());
break;
}
}
Divers contrôles de type Button dans .NET ont un événement OnCommand
ainsi qu'un événement OnClick
. Lorsque vous utilisez l'événement OnCommand
, vous disposez de paramètres supplémentaires que vous pouvez appliquer au bouton, tels que CommandName
et CommandArgument
. Ceux-ci sont ensuite accessibles dans le CommandEventArgs
.
Il est utile dans les endroits où vous souhaitez affecter la même méthode à plusieurs boutons et utiliser les paramètres CommandName
et CommandArgument
pour indiquer quelle fonctionnalité en cliquant sur ce bouton produira.
La classe EventArgs
est une classe de base. D'autres méthodes Web utilisent d'autres arguments d'événement.
par exemple. un LinkButton a un événement OnClick avec un paramètre EventArgs par défaut, mais il a également un événement OnCommand qui prend un CommandEventArgs : EventArgs
paramètre qui contient des informations supplémentaires (à savoir CommandName & CommandArgument).
La classe de base d'arguments d'événement est juste là comme un espace réservé de sorte que tous les EventHandlers se conforment à une signature similaire.