2016-08-18 140 views
0

我想从列表中填充文本框。我已经能够comboList填充组合框:从列表中填充文本框

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); 
    } 
} 

但是,当我尝试采用同样的原则,以文本框

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); 
    } 
} 

文本框不喜欢Items.Add(aosList [N] Items.Add (ID);) 我期待解决此问题的参考或指导。谢谢!

+0

文本框不是组合框,即使它们是,你忘了一段时间。 – sstan

+0

那么文本框的“Items”是什么? – zerkms

+0

您需要在'aoList [n]'和'Items'之间使用'.'来表示该语言。但正如斯坦所说 - 'TextBox'没有'Add'方法。你会期望'Add'方法对'TextBox'做什么? –

回答

0

A Combobox是项目的集合,因此有一个Items属性,您可以通过它添加/删除以更改其内容。 A 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! 
} 
+0

aosList [n] .Text = id;将最后的 XML值返回到所有文本框中。它很近。谢谢。 – Sully

+0

当我把一个断点和调试时,我可以看到所有的值的id循环 – Sully

+0

@Sully是的,这是因为你有一个'foreach'循环内的'for'。请检查编辑答案。 –

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"); 
    } 
} 
+0

我可以设置DataSource,DisplayMamber和ValueMember,但没有数据显示在ComboBox中。我将DropDownStyle更改为Simple,并且此外观适用于我设计的状态面板。有40个文本框。我将继续处理DataSource问题。 – Sully

+0

@完全面对任何错误? –

+0

我做到了,我无法获得数据源。你的建议的确开辟了一种使用ComboBox的新方式 - 我不知道这种能力。我很感激 - 谢谢! – Sully

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

Controls将返回此错误:错误不能像使用方法一样使用非可调用成员'System.Windows.Forms.Control.Controls'。 – Sully

+0

@Sully ops ..必须在C#中的方括号 – Slai