Announcement

Collapse
No announcement yet.

event auslösen nach bestimmer aktion

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • event auslösen nach bestimmer aktion

    Hallo,

    wie kann ich denn in einer eigens erstellten Klasse ein Event erezugen, dass dann aufgerufen wird, wenn es auch soll?

    Ich möchte das event schon innerhalb der klasse deklarieren, wenn das sinnvoll ist und auch geht.

    Wie muss ich das denn genau anstellen?

  • #2
    Hallo,

    siehe [FAQ] Eigenen Event definieren / Information zu Events


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      In deiner Klasse an der Stelle an dem ein Event ausgelöst werden soll den Event-Delegaten einfach aufrufen.
      Beispiel in der MSDN.

      Comment


      • #4
        Code:
        class Klasse_Test {
        
                public event TestEventHandler Received;
        
        public void TestFunktion() {
        
        //Event aufrufen
             Received();
        
        }
        }
        Jetzt will ich das Event in meiner Form Klasse verarbeiten. So habe ich es versucht, das event in der Form Klasse zu verarbeiten. Allerdings ohne Erfolg.

        Code:
        public partial class Form1 : Form {
        
        public Klasse_Test test1;
        
        test1 += TestEventHandler(OnReceived);
        
        
        private void OnReceived() {
        
        
        
        
        }
        
        }
        Code:
        Fehler	1	Der Operator "+=" kann nicht auf Operanden vom Typ "Test.Klasse_Test" und "Test.TestEventHandler" angewendet werden.	c:\Test\Form1.cs	26
        was muss ich denn da noch anders schreibne damit es passt?

        Comment


        • #5
          Hallo,

          hast du dir die Links angeschaut
          Darin wird alles nötige erklärt - nur zum Spass posten wir die Links nicht. Ein wenig mehr Eigeninitiative wäre angebracht.


          mfG Gü
          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

          Comment


          • #6
            ok,

            also das event funktioniert soweit mal ganz gut.

            Bis auf die Tatsache, wenn ich in der event-Methode etwas an ein label übergebne will.

            Dann bekomme ich folgenden Fehler zurück:

            Code:
            Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement label3 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.
            So habe ich das Event eingebunden. Einen kompilierfehler gibt esnnicht.
            Das hier ist mein Form.
            Code:
            test1 .Received += new TestEventHandler(OnReceived);
            
            private void OnReceived() {
            
                            label3.Text = "test123";
            
            
                    }

            Comment


            • #7
              Hallo,

              siehe [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke)


              mfG Gü
              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

              Comment


              • #8
                ja super, funktioniert.

                MUss ich das Invoke dann bei jedem Steuerelement extra machen oder kann ich das für alle, an die der text übergeben werden soll, auch nur ein einziges mal definieren?

                Comment


                • #9
                  Hallo,

                  nein nicht für jedes Control notwendig. Wenn einmal das Invoke gemacht wurde ist man wieder im GUI-Thread und dann ist es gut.


                  mfG Gü
                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                  Comment

                  Working...
                  X