Laden...

Unbekannte TextBox.Text anzahl in List laden

Erstellt von wbach vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.247 Views
W
wbach Themenstarter:in
20 Beiträge seit 2017
vor 6 Jahren
Unbekannte TextBox.Text anzahl in List laden

Hallo Zusammen,

kann mir jemand bei meinem Problem helfen. Ich versuche eine bestimmte Anzahl an erzeugten TextBox, den Text in eine List zu laden. Mit:

CommentList = new List<TextBox>();
            for (int j = 0; j < NewOACount; j++)
            {
                TextBox check = new TextBox();
                CommentList.Add(check);
            }
            TextBox[] commentListTb = CommentList.ToArray();

            for (int i = 0; i < NewOACount; i++)
            {
                commentListTb[i].BorderStyle = BorderStyle.FixedSingle;
                //commentListTb[i].TextAlign = ContentAlignment.MiddleCenter;
                commentListTb[i].Margin = new Padding(0, 0, 0, 0);
                commentListTb[i].Text = NewOAComment[i];
                commentListTb[i].Location = new System.Drawing.Point(56 + 161, 0 + i * 20);
                commentListTb[i].Name = NewOAComment[i];
                commentListTb[i].Size = new System.Drawing.Size(265, 10);
                //flowLayoutPanel1.Size = new System.Drawing.Size(266, NewOACount * 20);
                //flowLayoutPanel1.Controls.Add(commentListTb[i]);
                //panel1.Size = new System.Drawing.Size(266, NewOACount * 20);
                panel1.Controls.Add(commentListTb[i]);
            }

erstelle ich die TextBoxen und möchte anschließend den Text dann bearbeiten. Nach der Bearbeitung will ich die Texte durch Click dann in einer List zu laden. Mir ist aber unbekannt wie ich das machen kann, da ich die Anzahl nicht kenne.

LG wbach

3.170 Beiträge seit 2006
vor 6 Jahren

Hallo,

in C# gibt es das foreach-Statement, um eine Collection vollständig zu durchlaufen, unabhängig von der Zahl der Einträge.

Bei Dir also sowas wie:


var textList = new List<string>();
foreach(TextBox currentTb in commentListTb)
{
    // mach was mit currentTb, z.B.:
    textList.Add(currentTb.Text);
}

Wenn Du nur den Text auslesen und in eine neue Liste packen willst, wird es mittels Linq-Extensions noch einfacher:

var textList = commentListTb.Select(tb -> tb.Text).ToList();

Gruß, MarsStein

EDIT: beachte aber, dass das absolute Grundlagen sind, die hier im Allgemeinen vorausgesetzt werden.

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

W
wbach Themenstarter:in
20 Beiträge seit 2017
vor 6 Jahren

Hallo MarsStein,

thx für die Anwort ich versuche das umzusetzen.

Ps: Die Grundlagen fehlen mir. Bin auch kein gelernter Programmierer und seit kurzem erst mit C# tätig

W
wbach Themenstarter:in
20 Beiträge seit 2017
vor 6 Jahren

Habe das jetzt so gemacht:

private void button1_Click_1(object sender, EventArgs e)
        {
            foreach (TextBox currentTb in CommentList)
            {
                ReplaceOAComment.Add(currentTb.Text);
            }
            Form1.OAComment = ReplaceOAComment;
        }

Funktioniert 😃
Danke