#c# #winforms
#c# #winforms
Вопрос:
У меня есть следующая функция, она возвращает мне выбранный элемент управления приложением, если я возвращаюсь к своему приложению. Теперь я хочу вызвать событие выбранного элемента управления.
На самом деле я хочу выделить текст выбранного элемента управления textbox только в том случае, если выбрано приложение. Для этой задачи я написал несколько событий _Enter, но они не будут запущены, если вы вернетесь к своему приложению
Итак, я попытался получить активное управление приложением и запустить событие, которое я подготовил, но мне не удалось запустить событие. Активным элементом управления может быть одно из 10 текстовых полей. Пожалуйста, помогите.
protected override void WndProc(ref Message m)
{
//react to switching from an external application
const int WM_ACTIVATEAPP = 0x001C;
switch (m.Msg)
{
case WM_ACTIVATEAPP:
{
if (m.WParam.ToInt32() == 1)
{
//null blocker
var temp = this.ActiveControl;
if (temp != null)
{
//if you have a splitcontainer, it is always the active control...
if (temp.GetType() == typeof(SplitContainer))
{
var containerControl = (SplitContainer)ActiveControl;
if (containerControl.ActiveControl is TextBox)
{
//how can i call the _Enter event of the selected control?
((TextBox)containerControl.ActiveControl).Enter = ???;
}
}
}
}
break;
}
}
// proceed with default processing
base.WndProc(ref m);
}
Все события одинаковы:
private void tB_IMEI_Enter(object sender, EventArgs e)
{
tB_IMEI.SelectionStart = 0;
tB_IMEI.SelectionLength = tB_IMEI.TextLength;
}
Редактировать:
Комментарий BugFinder сделал свое дело.
Найдено старое событие для активации формы, но это было до внедрения SplitContainer.
Я исправил это для работы с элементом управления SplitContainer.
Спасибо, поиск ошибок!
Рабочее решение:
private void focusAllTheText(object sender, EventArgs e)
{
TextBox myBox = ((TextBox)sender);
myBox.SelectAll();
}
private void SearchProvision_Activated(object sender, EventArgs e)
{
if (ActiveControl != null amp;amp; ActiveControl is SplitContainer)
focusAllTheText(((SplitContainer)ActiveControl).ActiveControl, EventArgs.Empty);
}
Комментарии:
1. конечно, формы активируют триггеры событий, хотя