Вы должны использовать выпадающий (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, что делает код
Под «GUI» вы имеете в виду редактор формы из Visual Studio? –
Нет, я имею в виду запущенное приложение. –
показать, что вы пробовали :) –