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



BeitragVerfasst: Di 10.06.08 21:10 
Hallo,

ich möchte im Hauptformular ermittelte Arraywerte zur Ausgabe in ein 2. Formular übergeben.

Beispielsweise zur Ausgabe in einer Tabelle.

Mein Problem ist das ich nicht weiß wie ich die wert in das 2. Formular übergebe.

Könnt ihr mir dabei helfen?

Vielen Dank

Daniel
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 11.06.08 09:33 
Hallo Daniel,

kennt das Hauptformular das zweite Formular, und ist Form2 schon erzeugt worden? Dann geht es u.a. über eine Eigenschaft:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
//  in Form2 wie eine Eigenschaft:
public string SetText2 {
   set { myTextBox2.Text = value; }
   //  ich weiß jetzt nicht, ob eine Eigenschaft nur mit set (ohne get)
   //  überhaupt möglich ist
}
//  Aufruf in MainForm so:
form2.SetText2 = "neuer Wert";

Oder mit einer Methode:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
public void SetText2(string value) {
   myTextBox2.Text = value;
}
//  Aufruf in MainForm so:
form2.SetText2("neuer Wert");

Oder mit einem Delegate; aber das wird umständlicher für ein solch einfaches Beispiel

Wenn Form2 erst erzeugt werden muss, dann muss das zunächst geschehen; danach stehen die gleichen Verfahren zur Verfügung. Aber das kann auch direkt mit einem passenden Konstruktor gehen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
//  zusätzlicher Konstruktor bei Form2:
public Form2(string text2) {
   myTextBox2.Text = text2;
}
//  Aufruf in MainForm so:
form2 = new Form2("neuer Wert");

Alles, was ich hier mit string als Beispiel gemacht habe, geht mit jedem anderen Objekt ebenso - auch mit decimal[] oder List<myClass>.

Übrigens solltest Du - wenn es irgendwie möglich ist und Du selbst die Kontrolle hast - auf Arrays verzichten (sie sind wegen der festen Größe äußerst unflexibel) und lieber mit List<T> arbeiten.

Jürgen
blubber89 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 11.06.08 15:33 
super danke schön:)

Habe eine Aufgabe bekommen, im Rahmen des Informatikunterricht, wo drin stand das wir Arrays verwenden sollen!

Mich würde das aber trotzdem interessieren wie das mit List<T> funktioniert.
Kannst du mir das villeicht mal kurz erläutern?

danke

daniel
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 11.06.08 18:36 
user profile iconblubber89 hat folgendes geschrieben:
Mich würde das aber trotzdem interessieren wie das mit List<T> funktioniert.
Kannst du mir das villeicht mal kurz erläutern?

Das kann ich wohl nicht, weil es zu umfangreich ist. Du kannst in der SDK-Doku die Informationen zu List (generische Klasse) nachlesen.

Der entscheidende Unterschied ist die feste Größe beim Array:
ausblenden C#-Quelltext
1:
2:
3:
string[] stringArray = new string[5];
stringArray[0] = "erster String";
Console.WriteLine(stringArray[0]);

An den Positionen 1...4 stehen noch keine Strings, können aber eingetragen werden. Wenn du an Position 5 einen String eintragen willst, gibt es eine IndexOutOfRangeException. Nachträglich die Größe eines Array zu ändern ist möglich, aber umständlich und zeitaufwändig.

Bei einer List<> können Elemente beliebig hinzugefügt und entfernt werden. Außerdem ist automatisch sicher, dass die Elemente einem bestimmten Typ entsprechen (anders als bei der Array-Klasse).
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
List<string> stringList = new List<string>();
stringList.Add("erster String");
stringList.Add("zweiter String");
stringList.RemoveAt(0);
Console.WriteLine(stringList[0]);

Bei diesem Ablauf enthält die Liste nacheinander 0, 1, 2, 1 Elemente.

Gruß Jürgen
blubber89 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 12.06.08 20:41 
ok

trotzdem vielen dank für die hilfe

daniel