Announcement

Collapse
No announcement yet.

Delegaten aber wie?

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

  • Delegaten aber wie?

    Hallo,
    ich versuche aus einer WebForm1 auf die Komponenten und eigenen Methoden einer weiteren WebForm2 zuzugreifen. Dies geht auch mit der Verwendung von Delegaten. Allerdings kann ich nur Methoden aufrufen, die ich als Static deklariert habe. Sobald ich eine Methode aufrufe, die nicht als Static deklariert ist kommt die Fehlermeldung "

    "Ein Objektverweis ist für das nicht statische Feld, Methode oder Eigenschaft 'meineFunktion()' erforderlich."

    Ein "this" hilft hir auch nicht weiter.

    Kann mir jemand helfen?

  • #2
    Hallo,

    >...auf die Komponenten und eigenen Methoden einer weiteren WebForm2 zuzugreifen.

    wenn diese als public deklariert werden, kann das 1. Formular dies direkt aufrufen.

    >Kann mir jemand helfen?

    Wie sieht das an einem Beispiel aus und was noch wichtiger ist, was soll überhaupt erreicht werden

    Comment


    • #3
      Hallo Herr Kosch,

      Ich will in meinem Projekt auf nicht statische und statische Methoden aus einer anderen Form zugreifen

      Beispiel Form1:<BR><BR>
      public delegate void D();<BR>
      public static void M1() {...}<BR>
      public void M2() {...}<BR>

      Aufruf in Form2<BR><BR>
      Form1.D cd1 = new Form1.D(Form1.M1); // static methode <BR>
      Form1.D cd2 = new Form1.D(Form1.M2); // public methode <BR>

      Will ich nun die Instanziierung in der Form2 durchführen kommt bei der public-Methode immer der Fehler<BR>
      "Ein Objektverweis ist für das nicht statische Feld, Methode oder Eigenschaft 'Form1.M2()' erforderlich.&quot

      Comment


      • #4
        Hallo Konrad<P>
        Die Fehlermeldung kommt daher, dass M2() in der Form1 eine Instanzmethode ist. D.h. dass ein konkretes Objekt des Typs Form1 benötigt wird um diese Methode aufzurufen.<P>
        <PRE>
        public class Form2 {

        private Form1.D d1 = new Form1.D(Form1.M1);
        private Form1.D d2;
        private Form1 f1 = new Form1();

        public Form2() {
        d2 = new Form1.D(f1.M2);
        }
        </PRE>
        <P>
        Generell ist aber die Frage, warum Du delegaten verwendest. Die Methoden könne ja direkt aufgerufen werden. Die statische Methode M1() immer und die instanz Methode mit einem Objekt des Typs Form1.
        <P>
        Gruss Simo

        Comment


        • #5
          Hallo Simon,
          Ich hatte einfach einen Denkfehler :-)
          Dank Deiner Hilfe funktioniert jetzt alles! Danke

          Comment

          Working...
          X