2016-08-18 4 views
0

Я пытаюсь заполнить TextBoxes из списка. Я был в состоянии заполнить ComboBoxes с 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); 
    } 
} 

Но когда я пытаюсь применить тот же принцип к 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 [п] items.Add (id);) Я ищу ссылку или руководство, разрешающую эту проблему. Благодаря!

+0

Текстовые поля не являются полемиками, и даже если бы они были, вы забыли период. – sstan

+0

Итак, что такое 'Items' для текстового поля? – zerkms

+0

Вам нужно '.' Между 'aoList [n]' и 'Items' для языка, чтобы иметь смысл. Но, как сказал sstan, «TextBox» не имеет метода «Добавить». Что вы ожидаете от метода '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 Да, это потому, что у вас есть внутренний 'for' внутри цикла foreach. Пожалуйста, проверьте отредактированный ответ. –

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

Я сделал, я не смог получить DataSource. Ваше предложение открыло новый способ работы с ComboBox - я не знал об этой возможности. Я ценю это - спасибо! – Sully

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

Элементы управления возвращают эту ошибку: Ошибка Неисключаемый элемент 'System.Windows.Forms.Control.Controls' не может использоваться как метод. – Sully

+0

@Sully ops .. должен быть квадратными скобками в C# – Slai

Смежные вопросы