Форма Mdichild не получает фокуса
У меня есть форма MDI, которая содержит дерево (закрепленное слева), которое действует как меню для открытия форм MDIChild. Когда я нажимаю на узел дерева (в NodeMouseClick событие), открывается новая форма MDIChild. Проблема в том, что он не получает фокуса. Фокус всегда остается на дереве. Форма MDIChild не имеет заголовка и развернута в родительской форме MDI.
Что я уже пробовал:
Я пробовал использовать .Фокус, активация, BringToFront на форме MDIChild без всякой удачи.
Есть ли решение этой проблемы? Использование .NET 4.0.3.
Gerry Schmitz
Дочерний порядок может быть не таким, как вы думаете.
https://social.msdn.microsoft.com/Forums/vstudio/en-US/7294a7d8-c85c-44d8-b491-bc13c2500182/focus-mdi-child?форум=csharpgeneral
Member 10622063
Это не вопрос заказа. Первая форма, которая открывается, когда я нажимаю на узел в treeview, не получает фокус, как это должно быть. Фокус остается на древовидном представлении в форме MDI, как будто древовидное представление закаляет его.
Gerry Schmitz
Каков ваш обработчик "щелчка"? Лицевой ладонью обычно является то, что e.Handled не установлен в true, вызывая поведение "по умолчанию", которое вы видите.
Member 10622063
NodeMouseClick. Никакой е.обрабатывается там...
Richard MacCutchan
Было бы полезно, если бы вы показали код, который устанавливает фокус.
Member 10622063
Private Sub Actions_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) обрабатывает действия.NodeMouseClick
SourceForm.MdiParent = Mdiform; Описание
SourceForm.Показать()
SourceForm.BringToFront() 'не имеет никакого эффекта
Исходная форма.Activate() 'не имеет никакого эффекта
Конец Подводной Лодки
Dave Kreskowiak
Моей первой мыслью было попытаться установить фокус на элементе управления на форме, а не на самой форме.
Member 10622063
Я просто попробовал. Не повезло.
Похоже, что когда событие NodeMouseClick завершено, фокус возвращается к дереву nomatter, что вы делаете...
Правка: похоже, что контроль над дочерней формой, на которой я фокусируюсь, действительно получает фокус внутри формы, но сама форма все еще не имеет фокуса.
Richard MacCutchan
а вы пробовали Форма.Метод ActivateMdiChild(Form) (System.Окна.Формы) | Microsoft Docs[^]?
Member 10622063
Хотя я помню, что уже пробовал, я попробовал еще раз, просто чтобы быть уверенным. Но ничего не изменилось...
После.Показав форму, я добавил Вот это:
Me.ActivateMdiChild(SourceForm)
Я также попытался выполнить вышеуказанные действия из меню, и это сработало отлично. Пока я фокусировался на кнопке на форме, форма имела фокус и нажатие "пробел" я видел, как нажимается кнопка.
Может быть, ошибка TreeView?
Richard MacCutchan
Я не использовал MDI в C#, но я помню, что использовал его в MFC, и перемещение фокуса работало нормально. К сожалению, это очень далеко от .NET.