填充列表

时间:2016-08-18 00:31:11

标签: c#

我正在尝试从列表中填充TextBoxes。我已经能够使用comboList填充ComboBox:

var comboList = new System.Windows.Forms.ComboBox[4];

comboList[0] = cmbSite1Asset;
comboList[1] = cmbSite2Asset;
comboList[2] = cmbSite3Asset;
comboList[3] = cmbSite4Asset;

List<CRCS.CAsset> assets = _rcs.Assets;
foreach (CRCS.CAsset asset in assets)
{
    string id = asset.ID;

    for (int i = 0; i < 4; ++i)
    {
        comboList[i].Items.Add(id);
    }
}

但是当我尝试将相同的原则应用于TextBoxes

var aosList = new System.Windows.Forms.TextBox[8];

aosList[0] = txtAsset1;
aosList[1] = txtAsset2;
aosList[2] = txtAsset3;
aosList[3] = txtAsset4;
aosList[4] = txtAsset5;
aosList[5] = txtAsset6;
aosList[6] = txtAsset7;
aosList[7] = txtAsset8;

foreach (CRCS.CAsset asset in assets)
{
    string id = asset.ID;

    for (int n = 0; n < 8; ++n)
    {
        aosList[n].Items.Add(id);
    }
}

TextBox不喜欢Items.Add(aosList [n] Items.Add(id);) 我正在寻找解决此问题的参考或指导。谢谢!

3 个答案:

答案 0 :(得分:2)

你应该使用ComboBox来解决你的问题,而不是迭代每个元素,你只需使用下面的行来填充组合框。

comboList.DataSource=assets;
comboList.DisplayMember="ID";
comboList.ValueMember="ID";

但是,如果您想要TextBox中的值,则可以使用TextBox.AppendText方法,但它不会像ComboBox那样有效,因为它将包含文本+文本+文本,不会有像ComboBox.

这样的索引
private void AppendTextBoxLine(string myStr)
{
    if (textBox1.Text.Length > 0)
    {
        textBox1.AppendText(Environment.NewLine);
    }
    textBox1.AppendText(myStr);
}

private void TestMethod()
{
    for (int i = 0; i < 2; i++)
    {
        AppendTextBoxLine("Some text");
    }
}

答案 1 :(得分:0)

Combobox是项目的集合,因此具有Items属性,您可以添加/删除该属性以更改其内容。 Textbox只是一个显示某些文本值的控件,因此它具有一个Text属性,您可以设置/获取该属性,并且该属性表示显示的字符串。

System.Windows.Forms.TextBox[] aosList = new System.Windows.Forms.TextBox[8];

aosList[0] = txtAsset1;
aosList[1] = txtAsset2;
aosList[2] = txtAsset3;
aosList[3] = txtAsset4;
aosList[4] = txtAsset5;
aosList[5] = txtAsset6;
aosList[6] = txtAsset7;
aosList[7] = txtAsset8;

for (int n = 0; n < 8; ++n)
{
    aosList[n].Text = assets[n].ID; // make sure you have 8 assets also!
}

答案 2 :(得分:0)

int i = 1;
foreach (var asset in assets)
{
    this.Controls["txtAsset" + i].Text = asset.ID;
    i++;
}