Entwickler-Ecke
WinForms - Erstellte Steuerelemente abrufen
0odarkio0 - Do 23.06.11 16:30
Titel: Erstellte Steuerelemente abrufen
Hallo :)
Ich hab mir ein Programm geschrieben was beim Start Steuerelemente erzeugen soll je nach Anzahl der Schulfächer die ich von unserer Schulhomepage lade. Das sieht wie folgt aus:
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:
| private void Steuerelemente() { int x = 10; int y = 10; TextBox[] t1 = new TextBox[montag_faecher]; Label[] l1 = new Label[montag_faecher]; int j = 0;
for (int i = 0; i < montag_faecher; i++) { l1[i] = new Label(); l1[i].Parent = this.tabPage1; l1[i].Text = montag_fachname[j]; l1[i].Location = new Point(x, y); l1[i].Size = new Size(80, 20); t1[i] = new TextBox(); t1[i].Parent = this.tabPage1; t1[i].Text = "OK" + i; t1[i].Location = new Point(x+80, y); t1[i].Size = new Size(400,20); y += 21; j += 3; }
Button button_speichern = new Button(); button_speichern.Parent = this.tabPage1; button_speichern.Location = new Point(50, t1[montag_faecher - 1].Location.Y + 25); button_speichern.Text = "Speichern"; button_speichern.Size = new Size(100,40);
} |
das erstellen usw klappt auch... aber wenn ich die Steuerelemente dann Resizen lassen möchte kann ich nicht auf sie zu greifen...
C#-Quelltext
1: 2: 3: 4:
| private void Form1_Resize(object sender, EventArgs e) {
} |
wenn ich da t1[0] <- z.B rein schreibe sagt er das t1[0] im Kontext nicht vorhanden ist.
Wenn ich sie versuche Global zu erstellen sagt er mir das ich nicht auf die Variable montag_faecher verweisen kann.
Kann mir jemand sagen wie ich die Steuerelemente erstellen kann damit ich überall Zugriff drauf hab?
Christian S. - Do 23.06.11 16:34
Hallo!
Du musst sie als Feld der Klasse deklarieren und dann in der Methode instanzieren:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| private Textbox[] t1;
private void Steuerelemente() { t1 = new TextBox[montag_faecher]; } |
Wobei Du allerdings mal über die Benennung Deiner Variablen nachdenken solltest, die sollten bisschen mehr darüber aussagen, was drin steckt ;-)
Grüße,
Christian
0odarkio0 - Fr 24.06.11 10:51
Das hat geklappt danke :)
Aber jetzt habe ich noch ein Problem.
Wenn ich zu dem Array Steuerelement ein EventHandler erzeugen möchte
C#-Quelltext
1:
| ofd_button[i].Click += new EventHandler(Form1_Click); |
also ich habe eine nicht feste Anzahl von Buttons... das kommt halt immer auf die Fächer an.
Wenn ich die Buttons mit Form1_click erstellen lasse... dann bekomme ich bei jedem Button das selbe Ereignis :(
Wie kann ich es so machen das jeder Button etwas anderes ausgeben kann?
Edit:Ich hab gerade gesehen das es die frage schon in einem anderen Beitrag gibt... tut mir leid wegen der Doppelpost.. aber dort versteh ich es nicht.
Christian S. - Fr 24.06.11 11:13
Am Einfachsten dürfte sein, wenn Du Dir beim Erstellen der Textboxen in jeder TExtbox merkst, welchen Index sie im Array hat:
Und dann brauchst Du nur noch ein Event für alle, weil Du im Event abfragen kannst, welche Textbox es war:
C#-Quelltext
1: 2:
| var t = (TextBox) sender; var i = (int) sender.Tag; |
0odarkio0 - Fr 24.06.11 13:56
nochmal danke ... das klappt nun auch =D
aber ein letztes Problem hab ich noch...
ich möchte die Daten auf ein FTP server hoch laden aber ich bekomm immer diese fehlermeldung:
C#-Quelltext
1:
| Der Remoteserver hat einen Fehler zurückgegeben: (550) Datei nicht verfügbar (z.B. nicht gefunden oder kein Zugriff). |
oder diese:
C#-Quelltext
1:
| Der Remoteserver hat einen Fehler zurückgegeben: (530) Nicht angemeldet. |
Mein Code zum upload (fehlermeldung 1):
C#-Quelltext
1: 2: 3: 4: 5:
| WebClient hl = new WebClient(); hl.Proxy = new WebProxy(); NetworkCredential nc = new NetworkCredential("acc", "pass"); hl.Credentials = nc; hl.UploadFile("ftp://neweta@neweta.ne.funpic.de/Dateien" + t1_2[0].Text, "STOR", t1_2[0].Text); |
Mein Code zum upload (fehlermeldung 2):
C#-Quelltext
1: 2: 3: 4: 5:
| WebClient hl = new WebClient(); hl.Proxy = new WebProxy(); NetworkCredential nc = new NetworkCredential("acc", "pass", "ftp://neweta.ne.funpic.de"); hl.Credentials = nc; hl.UploadFile("ftp://neweta@neweta.ne.funpic.de/Dateien" + t1_2[0].Text, "STOR", t1_2[0].Text); |
Ich hab mal ein bisschen gegooglet und hab das ganze auch mal mit WebRequest versucht.. aber da bekomme ich die selben fehler.
also das pass und der Acc sind 100%ig richtig eingegeben weil ich die daten ja vom server laden kann... da klappt die anmeldung.
Weis da jemand wo der fehler liegt?
Christian S. - Fr 24.06.11 14:25
Neue Frage, neues Thema ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!