C# Von Form2 bei form1 die textbox änder?
Hallo ich möchte einfach wenn ich auf ein button klicke (form2) sich der text bei form1 ändert
2 Antworten
Dafür gibt's viele Wege. Es hängt vom gesamten Design ab. Form2 könnte ein Event auslösen, das in Form1 behandelt wird und die entsprechende Aktion ausführt.
Ok und was ist die Fehlermeldung? Vermutlich ist der Bezeichner nicht public. Controls sind standardmäßig als "private" deklariert. Das kannst du im Entwurf der Form bei der Eigenschaft "Modifiers" ändern.
Und zu Fehler 2: Die Methode (bzw. genauer der Konstruktor) erwartet ein Objekt (_form1), keine Angabe eines Klassennamens.
Bezüglich des Namens deiner Textbox: Der impliziert derzeit, dass es sich da (laut üblicher Namenskonvention) um ein Feld handelt, kein Property. Wenn es ein Property ist, beginne den Namen mit einem Großbuchstaben. Wenn es ein Feld ist, lege stattdessen ein Property für die Textbox an.
Das Text-Property wird mit einem großen T geschrieben.
Generell würde ich dazu raten, erst einmal mit Konsolenanwendungen als Umgebung zu starten, wenn du mit objektorientierten Grundlagen noch nicht vertraut bist (und das ist wohl noch der Fall).
hey sorry aber ich habe davon gar keine ahnung ich bräuche denn code so schnell wie es geht hätten sie eventuell eine project vorlage oder ein gutes video schon mal danke im voraus :)
und wie geht so was haben sie eventuell eine lösung die nicht schwer ist (ein video oder eine erklärung)?
Events sind in der C# Doku beschrieben.
https://docs.microsoft.com/en-us/dotnet/standard/events/
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/events/
Ich möchte einmal behaupten, das ist die meistgestellte Frage zu Windows Forms, zumindest hier auf GF.
Deine Form2-Instanz benötigt eine Referenz auf das Form1-Objekt. Du kannst sie auf verschiedenen Wegen überreichen. Zum Beispiel als Parameter für den Konstruktor oder über ein öffentlich zugängliches Property.
Hier ein Beispiel für Variante 1:
class Form2 : Form
{
private readonly Form1 _form1;
public Form2(Form1 form)
{
_form1 = form;
}
protected void OnButtonClick(object sender, EventArgs e)
{
_form1.YourLabel.Text = "Some other text";
}
}
Wenn das Objekt erstellt wird, musst du irgendwie eine Referenz auf das genutzte Form1-Objekt heranschaffen. Da ich dein Projekt nicht genauer kenne, kann ich da nicht genauer darauf eingehen.
Form2 form = new Form2(form1Instance);
form.Show();
https://prnt.sc/uzh9aj (ist ein screenshot)