Frage von sevy2010, 65

C# : wie greift Form2 auf Steuerelemente der Form1 zu?

Hallo liebe Community,

ich programmiere seit kurzem C# und versuche auf Steuerelemente von Form1 zuzugreifen. Das Problem ist:

  1. Ich kann mit einer static void nicht auf Steuerelemente zugreifen. Also habe ich versucht ein Event zu erstellen, wobei

  2. ich, um das Event zu feuern, eine neue Instanz erstellen muss.

Kann mir jemand helfen mit Form2 auf eine Funktion der Form1 zuzugreifen?

Danke im vorraus LG Sevy

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Reyha24, 46

Mit events geht es. Wovon musst du da eine Instanz erstellen? Einfach das event feuern. Kann auch statisch sein. Gruß :)

Kommentar von sevy2010 ,

Wie greife ich denn in der Form2 auf den EventHandler in Form1 zu, ohne eine neue instanz der Form1 zu erstellen?

Kommentar von Reyha24 ,

Du musst in der Form2 nicht auf den EventHandler der Form1 zugreifen. Nur das event feuern.

Kommentar von sevy2010 ,

sry, aber wie mache ich das? :D

Kommentar von Reyha24 ,

UpdateText("Hello World"); wobei UpdateText das event ist.

Kommentar von sevy2010 ,

Okay, noch mal ganz von vorne..
wenn ich in Form2 das Event deklariere und in Form1 die Funktion ist, wie sage ich dann in Form2 das er in Form1 ausführen soll?
Oder Muss ich das Event in Form1 deklarieren?

Kommentar von Reyha24 ,

Dann gibst du noch einen delegate in der Form2 an und fertig. Rest passierte in der Form1.

Kommentar von Reyha24 ,

Bin am Handy aber Pseudo: Form1: Form2.DeinEvent += new DeinEventHandler(DeineFunktion); Form2: static delegate void DeinDelegate(string text); static DeinDelegate DeinEvent; Aufruf DeinEvent("Hallo"); So in etwa.

Kommentar von sevy2010 ,

Ich bin zu blöd dafür..
in Form2 steht:
public delegate EventHandler EventDel(Object sender, Eventargs e);
public event EventDel EventName;

wenn ich jz in Form1 
Form2.EventName += Event_Handler;
kommt bei mir die Fehlermeldung: Für das nicht statische Feld, die Methode oder die Eigenschaft "Form2.EventName" ist ein Objektverweis erforderlich.

Kommentar von Reyha24 ,

Vielleicht erstmal die Basics lernen :) Hast auch nicht das geschrieben, was ich empfohlen hab ;D

Kommentar von sevy2010 ,

Ooookay..
hast du vllt nh link?

ich kann halt am besten durch Lerning by doing lernen, deswegen mach ich einfach, wenns nicht klappt suche ich auf google..
und da hab ich fast nix verstanden.. :x

Antwort
von EightSix, 37

Du solltest dich mit der OOP befassen. Dort lernst du die Zugriffsmodifikatoren private, protected, public, internal usw kennen. Außerdem noch für was Getter/Setter gut sind.

Kommentar von sevy2010 ,

kurz gesagt die komplette sprache mal vernünftig (nicht per lerning by doing) lernen?

Kommentar von EightSix ,

Ja. Wobei die OOP Prinzipien sprachübergreifend die selben sind. Form1 ist eine Klasse, Form2 ist eine Klasse. Es ist egal in welcher Sprache man lernt wie man Methoden, Eigenschaften, Konstruktoren etc. privat zugänglich macht oder auch von außen aufrufen kann. Aber das ist Grundwissen und nicht unbedingt mit learning-by-doing abgetan :).

 

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten