Moin,
Die Werte schicke ich bereits so von Form1 zu Form2:
FORM1:
FrmAlternative Form2uebergang = new FrmAlternative();
Form2uebergang.Anform2Str1 = StrasseHNrsplit[0]; //Übergang -> Form2 Strasse1
FORM2:
public partial class FrmAlternative : Form
{
public string Anform2Str1
{
get { return TxtStrasse1.Text; }
set { TxtStrasse1.Text = value; }
}
}
Nun will ich umgekehrt wieder welche zurückschicken:
Form2->Form1:
FORM2:
private void CmdUebertragen_Click(object sender, EventArgs e)
{
//Übertragung an Form1
FrmDokPrint Form1uebergang = new FrmDokPrint();
Form1uebergang.Anform1Str1 = TxtStrasse1.Text;
}
FORM1:
//Retour
public string Anform1Str1
{
get { return TxtStrasse.Text; }
set { TxtStrasse.Text = value; }
}
Wieso geht das nicht ? TxtStrasse.Text bleibt unverändert?
Schau dir den von Pinki verlinken Artikel an.
private void CmdUebertragen_Click(object sender, EventArgs e)
{
//Übertragung an Form1
FrmDokPrint Form1uebergang = new FrmDokPrint();
Form1uebergang.Anform1Str1 = TxtStrasse1.Text;
}
Du erstellst eine neue Instanz von FrmDokPrint, diese siehst du aber nicht da Form1uebergang unsichtbar ist. Änder das mal in :
private void CmdUebertragen_Click(object sender, EventArgs e)
{
//Übertragung an Form1
FrmDokPrint Form1uebergang = new FrmDokPrint();
Form1uebergang.Show();
Form1uebergang.Anform1Str1 = TxtStrasse1.Text;
}
dann siehst du was wirklich passiert ...
mfg
Wasabi
Falls fallend du vom Dach verschwandest, brems bevor du Unten landest.
Ah Danke!
Er eröffnet die ganze Form1 nochmal 8o
aber eigentlich sollte er ja nur den text von form2 in form1, welche bereits im hintergrund geöffnet ist neu reinnehmen 🤔
Ich bezweifle massiv, dass Du in 8 Minuten den Artikel vollständig gelesen, verstanden und nachvollzogen hast.
Der Linkt wurde Dir gegeben, dass Du das dortige Wissen übernehmen und anwenden kannst.
aber eigentlich sollte er ja nur den text von form2 in form1, welche bereits im hintergrund geöffnet ist neu reinnehmen
würde sich als Frage erübrigen, wenn Du dies getan hättest.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
ich gehe davon aus, dass du mit WPF-Elementen arbeitest.
Dann mach doch direkt einen Binding-Befehl mit 2Way-Modus! Einfacher gehts doch nicht
OO gibts seit Platon - hatte der auch C#?
Da er von Form
ableitet, wirds Windows Forms sein.
In WPF leitet man von Window
ab. Aber ja, auch in Forms arbeitet man optimalerweise mit Daten-Bindungen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Getesteter Code:
In Form1:
public partial class Form1 : Form
{
private string _vorname;
public string Vorname { get; set; }
private void CmdZeigeZwei_Click(object sender, EventArgs e)
{
Form2 fu = new Form2(this);
fu.ShowDialog();
}
private void CmdAnzeigen_Click(object sender, EventArgs e)
{
// Kontrolle
LblAnzeige.Text = Vorname + "";
}
In Form2:
public partial class Form2 : Form
{
private Form1 fh;
// Den Form2-Konstruktor überladen:
public Form2(Form1 aufrufer)
{
fh = aufrufer;
InitializeComponent();
}
private void CmdZeigeEins_Click(object sender, EventArgs e)
{
fh.Vorname = "Herbert";
fh.Show();
Close();
}
Ich habe das aus dem 'Einführung in C# mit Visual Studio 2017" Buch übernommen & etwas verändert.