Wenn Variable gesetzt => Aktion

Im Code von mir fehlt aber z.b. wie du Form2 öffnest, und das wäre grad wichtig.. ;)

Dort musst du nämlich deine Form1 übergeben, damit Form2 damit arbeiten kann.
Das Erstellen von Form2 sieht dann so aus: new Form2(this)
 
Grüß Euch,

Tutorial - C# Datenaustausch zwischen zwei Forms (Dazu dann noch der [post=1957498]Vorschlag von Alex[/post])

Der Grund warum man nicht einfach so auf Steuerelemente von anderen Forms/UserControls zugreifen sollte ist der, dass die Verwaltung und der Zugriff auf die Oberfläche immer der Klasse vorbehalten sein sollte, in der sich die Steuerelemente befinden. Logik und Design sollten immer strickt getrennt werden. Das gilt auch Querzugriffe auf Steuerelemente anderer Forms/UserControls. Sonst produziert man Spaghetti-Code und man kann dann sowieso nichts mehr wiederverwenden, da man alles schön "verdrahtet" hat.

Weiterführend währe das INotifyPropertyChanged Interface noch interessant...
 
Zuletzt bearbeitet:
also ich öffne form2 so durch einen buttonclick:

private void button1_Click(object sender, EventArgs e)
{
new Form2().Show();
}

und wenn ich new Form2(this) einfüge ändert sich auch nichts an dem nullreferanceexeption Fehler :s
 
Hallo,

Du musst auf jeden Fall
C#:
new Form2(this).Show();
verwenden.
 
Zuletzt bearbeitet von einem Moderator:
Hi nochmal

Egal was ich wie wo ändere die Fehlermeldung bleibt trotzdem :s

Also von vorne wie muss ich den Quelltext schreiben das Folgendes ohne Reibungen abläuft:

Wenn man In form1 auf button1 drückt öffnet sich form2. Wenn man dann in form2 auf button1 drück soll sich form2 schließen und in form1 sollen meine Anweisungen ausgeführt werden

Ich hoffe diesmal bekomme ich es dann auch hin
 
Hallo,

Für genau dieses Problem gibts genau eine total einfache Lösung, ohne irgendwelche Events oder Setter:

In meinem Beispiel hat jede Form einen Button, die Funktionen button1_click gehören jeweils zum Button der Form in der sie stehen.

Form1:
C#:
public partial class Form1 : Form
	{
		public Form1()
		{
			InitializeComponent();
		}

		private void button1_Click(object sender, EventArgs e)
		{
			Form2 f = new Form2();
			
			DialogResult dr = f.ShowDialog();

			if (dr == DialogResult.OK)
			{
				//Hier die Aktion ausführen
			}
		}
	}

Form2:
C#:
public partial class Form2 : Form
	{
		public Form2()
		{
			InitializeComponent();
		}

		private void button1_Click(object sender, EventArgs e)
		{
			this.DialogResult = DialogResult.OK;
			this.Close();
		}
	}
 
Zuletzt bearbeitet von einem Moderator:
Zurück