2 Stimmen

C# Übergabe von Variablen zwischen Methoden oder Eventhandlern

Ich versuche immer noch, über c# zu lernen, meine Frage ist, wie würde ich eine Variable von Item1_Click zu Item2_Click übergeben, ist dies die gleiche Sache wie die Übergabe zwischen Methoden oder ist dies anders, weil Sie Event-Handler sind?

public partial class Events : System.Web.UI.UserControl
{
     protected void Item1_Click(object sender, EventArgs e)
    {

          //code

    }

    protected void Item2_Click(object sender, EventArgs e)
    {
          //code
    }
}

2voto

Kevin Punkte 5576

Es handelt sich nach wie vor um reguläre Methoden, d. h. Sie können sie wie gewohnt aufrufen.

 protected void Item1_Click(object sender, EventArgs e)
 {
    // Call the event handler for Item2, passing the arguments
    // Item1 received
    Item2_Click(sender, e);
 }

 protected void Item2_Click(object sender, EventArgs e)
 {
     // Make it happen.
 }

Wenn Sie wiederverwenden möchten Item1_Click binden Sie einfach die click Ereignis des anderen Objekts zu Item1_Click auch.

Unter den folgenden Links finden Sie weitere Informationen zu Ereignissen in C#.

1voto

Gishu Punkte 130442

Ereignishandler werden vom Herausgeber des Ereignisses aufgerufen. Sie müssen also den Wert in einer Mitgliedsvariablen zwischenspeichern, wenn beide Handler vom selben Typ sind. Element1-Klick speichert etwas (z. B. die Auswahl in einer Variablen) und Element2-Klick verwendet diese Mitgliedsvariable für seine eigene Behandlung.

Nichts hindert Sie jedoch daran, den Event-Handler#2 von Event-Handler#1 aus aufzurufen, da es sich schließlich um eine Methode handelt. In diesem Fall müssen Sie könnte Slot im Parameter des EventHandler-Arguments, aber das ist nicht ganz intuitiv.

0voto

Ian Punkte 32230

Was Sie oben gezeigt haben, ist eine Methode. Es ist nur, dass ich mir vorstelle, dass Sie Ihre Methoden auf Ereignisse auf ein paar Tasten abonniert haben.

Es liegt dann an den Schaltflächen, die EventArgs-Instanzen selbst zu füllen. Wenn Sie ändern möchten, was in ein EventArgs hineingeht, müssen Sie von einer Schaltfläche erben und die OnClick Methode, um das Ereignis manuell auszulösen.

Sie könnten einige Statusinformationen auf Ihrem Formular haben (wenn Sie gemeinsame Informationen zwischen den beiden Methoden wünschen). Oder wenn Sie buchstäblich wollen, um Informationen von Item1_Click zu Item2_click übergeben dann können Sie einfach aufrufen:

protected void Item1_Click(object sender, EventArgs e)
{
    this.Item2_Click(sender new EventArgs()); // <== Stick information in EventArgs
}

0voto

Zebi Punkte 8414

Wenn Sie einen Wert von einem ersten Klick beibehalten wollen, können Sie eine Variable setzen und sie von Ihrem anderen Handler lesen.

 public partial class Events : System.Web.UI.UserControl
 {
      private SomeType variable;

      protected void Item1_Click(object sender, EventArgs e)
     {
           variable = someValue;
           //code
     }

     protected void Item2_Click(object sender, EventArgs e)
     {
           //code + do stuff with variable
     }
 }

0voto

AbdouMoumen Punkte 3774

Ereignisbehandler sind selbst Methoden, also kein Unterschied. Die Übermittlung von Daten (Variablen, wenn Sie so wollen) zwischen Methoden erfolgt über Parameter, allerdings müssen Ereignisbehandler eine bestimmte Signatur haben, so dass Sie nicht einfach weitere Parameter hinzufügen können. Der richtige Weg ist hier, ein Klassenmitglied (Feld oder Eigenschaft) als eine Art "globale Variable" (global für die Klasse) zu verwenden, wie in @Zebis Antwort erwähnt

Ich hoffe, das hilft :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X