2013-05-27 2 views
0

Предположим, у меня есть 10 текстовых полей в моей форме. Они называются textBox1, textBox2 etc. И я хотел бы иметь возможность выбирать текстовое поле, которое я хочу редактировать, например, у меня есть comboBox with numers 1-10, и если я выбираю, скажем "5", то текст textBox5 изменяется (вводится дополнительный , одиннадцатый, textBox, например).Выбор текстового поля для редактирования из GUI (WinForms)

Я знаю, это звучит странно, но мне нужно научиться выбирать элементы управления и редактировать их из графического интерфейса.

+0

Под «GUI» вы имеете в виду редактор формы из Visual Studio? –

+0

Нет, я имею в виду запущенное приложение. –

+0

показать, что вы пробовали :) –

ответ

0

Вы должны использовать выпадающий (cmb в моем коде) SelectedIndexChanged,

private void cmb_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    var numberFromComboBox = cmb.Text; 
    var txtBoxToEdit = Controls.OfType<TextBox>() 
           .Where(c => c.Name.EndsWith(numberFromComboBox)) 
           .FirstOrDefault(); 

    if(txtBoxToEdit != null) 
    { 
     txtBoxToEdit.Text = "was selected"; 
    } 
} 

Update
Чтобы понять, что делает этот код, нужно понимать немного Linq.

Все элементы управления (ComboBoxes, DataGridViews, TextBoxes и т. Д.) Хранятся в коллекции Controls.

Но мы хотим только TextBoxe о том, что непосредственно на форме:

List<TextBox> listOfTxtBox = Controls.OfType<TextBox>(); 

listOfTextBox Это теперь содержит все текстовые поля. Но нам нужен только тот, который соответствует числу, которое мы выбрали в combobox (cmb).

Для этого мы «фильтруем» нашу коллекцию текстовых полей с помощью метода Where.
В моем выражении это начинается с - c => c.Name.EndsWith(numberFromComboBox) дает все текстовые поля с именем (TextBox.Name), которое заканчивается номером из нашего ComboBox.

Последняя часть FirstOrDefault(), она просто берет первый элемент в нашей (теперь фильтрованной) коллекции. Если нет никаких элементов в коллекции (по какой-либо причине) FirstOrDefault вернется null

Hopes это помогает clearfi, что делает код

+0

@ user2382010 соответствует ли это вашим требованиям? –

+0

Спасибо, человек, это ТОЧНО, что мне нужно! Теперь мне нужно понять, как это работает :) –

+0

@ user2382010 Я сломаю это для вас - см. Меня изменить через минуту –

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