Вот небольшой фон моего приложения:
- У меня есть основная форма, которая содержит вертикальный SplitContainer.
- Внутри левой панели SplitContainer у меня есть элемент управления TreeView.
- Внутри правой панели SplitContainer у меня есть еще один SplitContainer (этот горизонтальный).Этот контейнер является фиксированным, заголовки над разделением и элемент управления Panel ниже него.
- Я динамически загружаю свои собственные пользовательские элементы управления в элемент управления Panel при каждом изменении вида дерева.
Итакпока все хорошо.Однако вот моя проблема.
Большинство пользовательских элементов управления, которые динамически загружаются, имеют DataGridView, который должен получать фокус при инициализации элемента управления.Иногда эта сетка находится непосредственно на поверхности UserControl;иногда это в GroupBox;и т. д.
Как лучше всего программно установить фокус на элемент управления DataGridView, учитывая, что он может быть помещен в переменное число контейнеров элемента управления?Я попробовал очевидное - .Select, .Focus, .ActiveControl и т. Д. Ничто из этого, похоже, не работает - выбранный элемент TreeView все еще подсвечен, и хотя запись выбрана в DataGridView, она несосредоточиться.
Любые идеи приветствуются.
РЕДАКТИРОВАТЬ : код ниже
Вот код, куда я добавляю пользовательский элемент управления в основную форму:
Private Sub LoadRightPanel(ByVal section As String, ByVal moduleName As String)
Heading.Text = String.Empty
SuspendLayout()
RightPanel.Controls.Clear()
Select Case section.Trim.ToLower
Case "effective date types"
Heading.Text = "Effective Date Types"
RightPanel.Controls.Add(New EffectiveDateTypeAddEditControl(moduleName))
.
.
.
End Select
With RightPanel.Controls(0)
.Dock = DockStyle.Fill
End With
ResumeLayout()
End Sub
И здесь я пытаюсь установить фокус в конструкторе пользовательского элемента управления:
Public Sub New(ByVal programModule As String)
InitializeComponent()
currentModule = programModule
UpdateGrid()
UpdateButtonSettings()
ValueGrid.Select()
End Sub