SplitContainer.Panel1 Выбор для изменения выбора SplitContainer.Panel2 - PullRequest
0 голосов
/ 26 августа 2009

Документация MSDN для элементов управления SplitContainer гласит:

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

Итак, у меня есть SplitContainer, который разделен по горизонтали, имея верхнюю и нижнюю панели. Я хотел бы сделать следующее: когда элемент управления в Panel1 (вверху) получает фокус, мне нужен элемент управления в Panel2 (внизу) для фокусировки. Затем фокус снова возвращается к элементу управления Panel1.

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

Есть ли альтернативное решение для этого? Кто-нибудь пробовал это. То, что я пытаюсь сделать, по сути то же самое, что и Outlook. Когда вы выбираете сообщение в папке «Входящие». Тело сообщения отображается на нижней панели.

Ответы [ 2 ]

0 голосов
/ 26 августа 2009

Вам действительно нужно установить фокус на Panel2?

Я предполагаю, что ваш Panel2 содержит что-то вроде объекта RichTextBox, скажем, RTB1 для простоты.

Скажите, что кто-то что-то выбирает в Panel1. Для простоты предположим, что у вас есть элемент управления ListView с именем LV1.

Затем в событии LV1.SelectedIndexChanged прочитайте это событие и введите свои данные в RTB1.

Тебе не нужно фокусироваться на Panel2, если я чего-то не понимаю.

0 голосов
/ 26 августа 2009

То, что вы описываете, не имитирует Outlook. Если я выбираю сообщение в списке сообщений в Outlook, фокус остается на списке сообщений. Да, тело сообщения отображается ниже, но фокус не перемещается.

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

...