Frage von Jugurtman, 71

Counter von Form1 zu Form2 c#?

Also ich habe ein kleines "Problem" Ich habe ein Visual C# Projekt mit 2 Forms. In Form 1 ist ein Button1 der mit counter++ die klicks zählt. Jetzt möchte ich das diese klicks in einem Label in Form2 angezeigt werden. In einer Form funktioniert das Super mit folgendem Code: "public void button1_Click(object sender, EventArgs e) { counter++; this.label1.Text = counter.ToString();" label 1 existiert aber jetzt nicht mehr in Form1 sondern nur noch in Form2. Ich habe alles was ich so finden konnte ausprobiert bin aber nicht ans Ziel gekommen. Vlt hat hier jemand eine passenden Lösung. Danke schonmal

Antwort
von EightSix, 18

Form1 und Form2 sind Objekte. Das eine Objekt muss eine Referenz des anderen speichern um darauf zugreifen zu können. Der Zugriffsmodifikator für das Label muss zudem mindestens internal sein um darauf zuzugreifen von außerhalb des eigenen Objekts.

Antwort
von triopasi, 45

Wie initialisierst du denn Form2? Mit Form2 f2 = new Form2()?

Wenn ja, kannst du f2 als globale Variable in Form1 benutzen, und dann via f2.Controls ist'S glaub ich auf das Label in Form2 zugreifen.

Kommentar von triopasi ,
using System;
using System.Windows.Forms;
namespace gf
{
public partial class Form1 : Form
{
private Form2 f2 = new Form2();
private int count = 0;

public Form1()
{
InitializeComponent();
f2.Show();
}

private void button1_Click(object sender, EventArgs e)
{
f2.Controls["label1"].Text = (++this.count).ToString();
}
}
}


In Form2 ist "label1" einfach public gemacht. (Eigenschaftsfenster > "Modifiers" > "public")

Kommentar von Jugurtman ,

Super, hat geklappt. Ich danke vielmals :))

Antwort
von NMirR, 43

Du musst den Namespace der anderen Form als using Direktive hinzufügen, dann kannst du mit ihr arbeiten.

Kommentar von triopasi ,

Die Forms sind standartmäßig im selben Namespace.

Kommentar von NMirR ,

achso? dann habe ich das anders gemacht.

Keine passende Antwort gefunden?

Fragen Sie die Community