我正在尝试从列表中填充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);) 我正在寻找解决此问题的参考或指导。谢谢!
答案 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++;
}