Autor Beitrag
sCrub
Hält's aus hier
Beiträge: 4


C# (VS10Ent)
BeitragVerfasst: So 21.11.10 18:03 
Guten Abend c# Community

Ich hab ein kleines Problem mit Application.OpenForms :(
erstmal zu meinem Code wie der zurzeit aussieht

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
                string[] newmsgtexta = newmsgtext.Split(new Char[] { '/' });

                Form currentForm = Application.OpenForms[newmsgtexta[1]];
                if (currentForm == null)
                {
                    string ip = "";
                    chatf Chatf = new chatf(ip);
                    Chatf.Name = newmsgtexta[1];
                    Chatf.WindowState = FormWindowState.Minimized;
                    Chatf.Text = newmsgtexta[1];
                    Chatf.textBox1.Text = newmsgtexta[2];  // << das geht
                    Chatf.Show();
                }
                else
                {
                    //currentForm.textbox1.Text = newmsgtexta[2];  << das geht leider nicht^^
                    currentForm.Show();
                }


ich prüfe ob ein Fenster bereits offen ist wen eine Nachricht herein kommt.
Das oben funktioniet auch alles wen er keine Form findet mit dem Namen, erstellt er eine neue und schreibt den Text in die textbox.
Nach else beginnt das Problem.
Wen er eine Form findet mit dem Namen möchte ich das er auch dort etwas in die textbox schreibt.

vielen Dank im vorraus schonmal für die Hilfe und Antworten
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 21.11.10 19:05 
Hallo!

currentForm ist ja aktuell vom Typ Form, also der Basisstyp für Formen ohne irgendwas drauf. Wenn Du nun auf eine spezielle Eigenschaft einer Form zugreifen willst, musst Du currentForm in den korrekten Typen casten, also wahrscheinlich chatf:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
if (currentForm is chatf)
{
  var chatForm = (chatf) currentForm;
  chatForm.textBox1.Text = "foo";
}


Noch ein paar andere Hinweise:

Typen sollten groß geschrieben werden, lokale Variablen klein. Bei chatf machst Du es genau andersrum

Ich würde außerdem nicht direkt auf die TextBox zugreifen, sondern Eigenschaften anlegen, wie z.B. "MessageText", die dann auf die richtige Textbox umleiten. So erreichst Du eine bessere Kapselung, was bei späteren Änderungen an der Benutzeroberfläche arbeit spart und Fehler vermeiden hilft.

Auf jeden Fall solltest Du bessere Namen als "textBox1" benutzen.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".