Autor Beitrag
mo0n_
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50

Win7
C#
BeitragVerfasst: Do 26.01.12 11:57 
Hallo Leute,

wie immer habe ich eine Frage:
ich habe auf meinem Form exakt 10 labels bei denen ich den Text via for-Schleife ändern möchte.
Sie sind von 11-21 nummeriert.
Ich habe in anderen Foren Lösungen gefunden, die aber alle auf dem folgenden Code basieren:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Label[] label = new Label[5];
forint i = 0; i < label.Length; i++)
{
label[i] = new Label();
//labeleigenschaften ergänzen
}

und zum ändern des Textes

forint i = 0; i < label.Length; i++)
{
label[i].Text = "abc";
}


So will ich es nicht machen !
Ich dachte eher an so eine Lösung, wozu mir aber der entscheidende Anstoß fehlt:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
            int counter = 11;
            for (int i = 0; i < this.dataGridViewRow.Cells.Count - 1; i++)
            {
                label[counter] = this.dataGridViewRow.Cells[i].Value.ToString();
                counter++;
            }


was aber so nicht funktioniert.
Ideen ?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4796
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 26.01.12 13:00 
Hallo mo0n_,

dann mußt du dir selber ein Array anlegen:
ausblenden C#-Quelltext
1:
Label[] label = { label11, label12, label13, ... }					

Trotzdem ist der Ansatz mit dem dynamischen Anlegen besser.
Da du von anderen Foren sprichst, meinst du sicherlich u.a. Variablennamen zur Laufzeit zusammensetzen?
mo0n_ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50

Win7
C#
BeitragVerfasst: Do 26.01.12 15:08 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
int y = 97;
            for (int i = 1; i < this.dataGridViewRow.Cells.Count; i++)
            {
                Label lbl = new Label();
                lbl.Name = "Label" + i.ToString();
                lbl.Location = new Point(209, y);
                lbl.Text = this.dataGridViewRow.Cells[i].Value.ToString();
                lbl.AutoSize = true;
                this.Controls.Add(lbl);
                y += 30;
            }

so habe ich es gelöst. Vielen Dank TH.

Allerdings folgt nun mein Problem Nummer 2:
Wie du meinem Code entnehmen kannst habe will ich den labels Values aus einer Zeile aus meinem via BindingSource angebundenem DGV zugeordnet.

Dieses DGV befindet sich auf einem vorhergehenden Form (Form A)
Das DGV enthält nur eine Auswahl von Feldern die sich in der angesteuerten Tabelle befinden.
die ausgewählten Felder habe ich mit folgendem Befehl ausgelesen und an das aktuelle Form (Form B) übergeben:

ausblenden C#-Quelltext
1:
2:
            Details dlg = new Details(this.dataGridView1.CurrentRow);
            dlg.ShowDialog();


Auf Form B) befinden sich die labels aus meinem Vorhergehenden Problem.
Diese sollen jetzt die Values ALLER Felder der Tabelle annehmen.

An sich ist das einsetzen der Werte in die Labels kein Problem
ausblenden C#-Quelltext
1:
                lbl.Text = this.dataGridViewRow.Cells[i].Value.ToString();					


allerdings nehmen die Labels nur die selektierten Werte aus Form A an, was ja an sich auch logisch ist.

Meine Frage ist jetzt:
Wie erreiche ich, das alle Werte des ausgewählten Datensatzes ausgelesen und eingesetzt werden?

packe das ganze nochmal in ein neues Thema.

du bist mein Lebensretter :)