Entwickler-Ecke

WinForms - Eine Textbox aus Usercontrol von Klasse beschreiben


0odarkio0 - Sa 25.03.17 19:08
Titel: Eine Textbox aus Usercontrol von Klasse beschreiben
Hallo,

ich habe folgendes Problem:
Ich habe ein usercontrol "Zettel" und eine Klasse.cs "Laden"

im user control steht folgender Code:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
 private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text != "")
            {
                Liste_[0] = textBox1.Text;
            }
            else
            {
                Liste_[0] = "";
            }
        }

public void texteinfuegen(string text)
        {
            textBox1.Text = "hi";
        }


und in der Klasse "Laden":

C#-Quelltext
1:
2:
 Zettel zettel = new Zettel ();
            zettel.texteinfuegen("hi");


wenn ich jetzt "zettel" aufrufe wird das "textBox1_TextChanged" event aufgerufen. Das ist auch gut so weil ich so den Wert in eine Liste speichere. Aber der Text wird nicht in die Textbox rein geschrieben sondern es wird nur das event ausgelöst.

Wie bekomme ich den text in die Textbox?
Kann mir da jemand helfen?

( das ich ein neues usercontrol aufrufe und da der Fehler liegt ist mir klar das habe ich auf vielen Hilfe Seiten gelesen. Aber ich brauche einen kleinen Anstoß in die richtige Richtung bitte =/

Moderiert von user profile iconTh69: Titel (leicht) geändert.


Ralf Jansen - Sa 25.03.17 19:19

Ist "Laden" die Form auf dem dein UserControl angezeigt wird?

Wenn ja solltest du da ein Variable für dein UserControl haben, vermutlich "zettel1" benannt, die solltest du auch benutzen anstatt ein weiteres UserControl zu erzeugen.
Wenn "Laden" nicht dein Form ist hast du ein architektonisches Problem und du solltest uns mehr Code, zum Beispiel deine Form die das UserControl benutzt und die "Laden" Klasse, zeigen dann haben wir eine Chance dich richtig zu lenken.


0odarkio0 - Sa 25.03.17 20:03

"Laden" ist eine Klasse(Laden.cs)
"Zettel" ist mein usercontrol welches in Form1 hinzugefügt wird.

ich möchte Werte in der Klasse "Laden" aus einer Textdatei lesen und dann den Text aus der Datei in meinem usercontrol("Zettel") in die textboxen schreiben.
Die Klasse "Laden.DateiWerteAuslesen" rufe ich in der form1 auf.

in der Klasse(Laden.cs) steht folgendes:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
        

public void DateiWerteAuslesen(string Name)
        {
            string DateiPfad = System.Windows.Forms.Application.StartupPath + "\\Werte\\" + Name;
            DateiExistiert(DateiPfad, Name);
            FileStream fs = new FileStream(DateiPfad,FileMode.Open);
            StreamReader sr = new StreamReader(fs);

            string line;
            int anzahl = 0;
            while ((line = sr.ReadLine()) != null)
            {
                if (line.IndexOf("=") != -1)
                {
                    switch (anzahl)
                    {
                        case 0:

                               //[color=red] Hier soll dann z.B. der text von Zeile eins in textbox1.Text im usercontrol("Zettel") geschrieben werden.[/color]

                            break;
                        case 1:
                               //[color=red] Hier soll dann z.B. der text von Zeile zwei in textbox2.Text im usercontrol("Zettel") geschrieben werden.[/color]

                            break;
                        case 2:
                            break;
                        case 3:
                            break;
                        case 4:
                            break;
                   }

                }
            }
            sr.Close();
            fs.Close();
        }


Delete - So 26.03.17 01:20

- Nachträglich durch die Entwickler-Ecke gelöscht -


Th69 - So 26.03.17 09:23

Hallo 0odarkio0,

bitte Cross-Posts immer angeben: myCSharp.de - Eine Textbox eines usercontrols von einer Klasse aus beschreiben. [http://www.mycsharp.de/wbb2/thread.php?threadid=118910]

Kommst du mit meinem Artikel nicht klar?

Du benötigst eine Referenz auf das in der Form angezeigte UserControl, nicht ein neues UserControl erzeugen, also z.B. als Parameter übergeben:

C#-Quelltext
1:
public void DateiWerteAuslesen(string Name, Zettel zettel)                    

Wie Ralf schon geschrieben hat (und ich in meinem Artikel), ist dies jedoch nicht zu empfehlen, denn eine eigenständige Klasse sollte nicht direkt auf Form-Elemente zugreifen.
Besser wäre es daher, wenn deine Laden-Klasse eine Datenstruktur zurückgibt, welche dann von der Form-Klasse aus diese Werte an das UserControl weitergibt.