[C#] - Kommunikation zwischen Forms

kasal

Erfahrenes Mitglied
Hallo Freunde!

Habe hier ein Problem. Das Tutorial von Norbert Eder hab Ich bereits durchgelesen, habe auch sonst nicht viel brauchbares gefunden.

Ich habe ein UserControl und eine Form. Im UserControl befindet sich eine Textbox. Durch einen Button im UserControl kann man die Form öffnen. In Der Form gibt man nen Wert ein. Im Usercontrol befindet sich eine Funktion die den Wert der Textbox ändert. Bevor die geöffnete Form geschlossen wird, wird diese Funktion im Usercontrol aufgerufen und der Wert als Parameter mitgegeben und anschliessend wird die Form mit Close() geschlossen. Das übergeben funktioniert, doch der Inhalt (Text) der Textbox wird nicht geändert. Woran könnte das liegen?

Könnte es vllt. daran liegen, dass die Funktion "von aussen" aufgerufen wird, also von der anderen Form? Habe sie als "internal" definiert. Wenn ich die Funktion vom Usercontrol aufruf funktioniert es.

Hoffe ihr könnt mir helfen.


lg,
kasal
 
Ich versteh nicht ganz was du meinst. Ich versuch das mal zu interpretieren:
1. Du hast ein UserControl mit einer TextBox und einem Button.
2. Über den Button öffnest du eine Form
3. Man kann in der Form einen Wert eingeben
4. Beim schließen wird der Wert an die TextBox übergeben

Bei mir hat sich da ein anderer Code als im Tutorial von Norbert bewährt:
C#:
button1_click(...)
{
    Form1 form = new Form1();
    if(Form1.ShowDialog() == DialogResult.OK)
    {
        textbox1.Text = Form1.getText;
    }
}

Das musst du allerdings in dem UserControl haben. Ansonsten würde ich dem Usercontrol eine Property (set) verpassen, über welche man den Text der Textbox setzen kann, und dann noch ein buttonClick Event reinmachen, über welches du das ganze ausführen kannst. Das geht dann ungefähr so:
C#:
// Im Usercontrol

...
public event EventArgs buttonClick;

Button1_Click(...)
{
    if (buttonClick != null)
        buttonClick(this, new EventArgs);
}

public string setText
{
    set { textbox1.Text = value; }
}

// Bei der Verwendung des Controls

control1_buttonClick(object sender, EventArgs e)
{
    Form1 form = new Form1();
    if(form.ShowDialog() == DialogResult.OK)
        ((control)sender).setText = form.getText;
}

Dabei musst du natürlich im Form auch noch einen getter implementieren.
 
Zuletzt bearbeitet von einem Moderator:
Zurück