2011-06-08 3 views
0

В моей форме у меня есть две сплит-контейнеры и некоторые панели и элементы управления ActiveX и элементы управления Windows Forms другие кнопки, флажок, и т.д., как сейчас в коде, я сказалSplitContainer признан ActiveControl

 Control activeControl = this.ActiveControl; 
     MessageBox.Show(activeControl.Name); 

но всегда возвращая splitcontainer1 как activeCnotrl. Как мне получить ActiveControl?

ответ

3

Предполагая, что «это» является формой, когда вы вызываете this.ActiveControl, он ищет активный элемент управления непосредственно на форме (это). Вы, вероятно, придется сделать Somthing как:

this.splittercontainer1.ActiveControl 
+0

ну D Не хочу жесткий код мои имена элементов управления ... плюс я пишу это в ProcessCmdKey и я не знаю, где я am..maybe я на splitContainer2 или 3 или 4! – Bohn

+2

Зачем ты меня опустил? Ваш вопрос в том, почему SplitContainer был обнаружен как активный элемент управления и как определить активный элемент управления. Вы никогда не указывали, что у вас есть динамические элементы управления или что вы пишете в ProcessCmdKey. –

0

я была такая же проблема, я решил ее проверить, если элемент управления является SplitContainer, а затем проверьте Актив.управление внутри SplitContainer.

if (ActiveControl.GetType() == typeof(SplitContainer)) 
{ 
    var containerControl = (SplitContainer)ActiveControl; 
    if (containerControl.ActiveControl is MemoEdit) 
    { 
     //Do something 
    } 
} 
+1

Продвинутый отрицательный; Это просто, но работает. В любом случае я бы заменил if (ActiveControl.GetType() == typeof (SplitContainer) с if (ActiveControl - SplitContainer) – coloboxp

Смежные вопросы