| 

.NET C# Java Javascript Exception

2
Ich habe zwei Forms, Form1 und Form2. Wie kann ich von Form2 aus auf ein Control in Form1 zugreifen?
14.07.2009
step123 33 2 4
3 Antworten
1
Dazu muss die Objektreferenz aus Form1 irgendwie zu Form2 kommen. Das könne man mit einer statischen Klassenvariable lösen:

static class Globals
{
public static Button ButtonInForm1; //globale Variable
}

class Form1
{
public Form1() { Globals.ButtonInForm1 = this.btOk; //global speichern }
}

class Form2
{
public void OnLoad(...) { Globals.ButtonInForm1.Visible = false; //global aufrufen }
}
14.07.2009
alexander 860 2 9
1
Diese Möglichkeit entspricht nicht unbedingt dem objektorientierten Gedanken. Es wäre einfacher und objektorientierter wenn das Control in Form1 als Eigenschaft offen gelegt wird und Form2 ein Verweis auf Form1 übergeben wird.

Anmerkung: Eine Form ist auch nur eine Klasse!
gfoidl 27.07.2009
4
Am besten gar nicht. Ein Vorgehen gemäß Model-View-Controller (MVC) stellt eine mögliche Ideallösung für diese Aufgabe dar.
27.07.2009
gfoidl 9,4k 3 5
2
Wobei ich eigentlich MVP für besser geeignet halte. Beim MVC verschmilzt nämlich die View und Controller (Gesamtheit der Ereignishandler) zu einem während beim MVP eine Trennung von View und Presenter vorliegt.
gfoidl 22.08.2009
2
Du kannst Form2 dazu im Konstruktor die Referenz auf das Control in Form1 übergeben. Wichtig ist ja nur, dass Form2 irgendwie an diese Objektreferenz kommt.
14.07.2009
irek 31 1 1
1
könntest du dazu beispielcode angeben?
step123 14.07.2009
Sieht ungefähr so aus (hoffe, das sieht jetzt in einem Kommentar gut aus):

class Form1
{
public Form1() { Form2 myForm2 = new Form2(this); }
}

class Form2
{
public Form2(Form1 myForm1) { Form1 myForm1 = myForm1; }
}
Blauesocke 27.10.2009

Stelle deine .net-Frage jetzt!