Я пытаюсь выполнить итерацию по группе ComboBoxes и установить свойство с помощью конкатенированной строки & переменной для представления имени элемента управления. Однако я не могу получить экземпляр формы для распознавания (String Integer_Variable) в качестве одного из своих элементов управления - и поэтому он не распознает какие-либо из соответствующих свойств или подпрограмм как члены System.Windows.Forms .Control.Доступ к нескольким элементам управления формы с использованием переменной для имени
Я нашел DirectCast solution on SO и, похоже, работает (хотя я сомневаюсь), но это похоже на очень неуклюжие решения. Есть ли более чистый способ сделать это?
For myTempCount = 1 To 6
If tempValue < Me.("ComboBox" & myTempCount).Items.Count Then
ComboBox.SelectedIndex = tempValue 'appears to work -- how?
Me.ComboBox.SelectedIndex = tempValue 'appears to work
Me.("ComboBox" & myTempCount).SelectedIndex = tempValue 'doesn't work
Me.Controls.("ComboBox" & myTempCount).SelectedIndex = tempValue 'doesn't work
DirectCast(Me.Controls.Find(("ComboBox" & myTempCount), True)(0), ComboBox).SelectedIndex = tempValue 'appears to work
DirectCast(Me.Controls("ComboBox" & myTempCount), ComboBox).SelectedIndex = tempValue 'appears to work
Next
Этот код был первоначально VBA/VB6, который я положил через Basic Companion ArtinSoft в визуальном обновлении (VBUC). FWIW, я использую Microsoft Visual Basic 2010 Express.
Спасибо, это было очень полезно - особенно предупреждение о DirectCast! Я должен был понять, что мне нужно было передать String как Control. – Wingman4l7