У меня есть следующая функция, она возвращает мне выбранный элемент управления приложения, если я вернусь к своему приложению.Теперь я хочу вызвать событие выбранного элемента управления.
На самом деле я хочу выбрать текст выбранного элемента управления textbox, только если выбрано приложение.Для этой задачи я написал несколько _Enter Events, но они не будут запущены, если вы вернетесь к своему приложению
Поэтому я попытался получить активный контроль над приложением и запустить подготовленное событие, но не смог запустить событие,Активный элемент управления может быть одним из 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.Спасибо Bugfinder!
Рабочий раствор:
private void focusAllTheText(object sender, EventArgs e)
{
TextBox myBox = ((TextBox)sender);
myBox.SelectAll();
}
private void SearchProvision_Activated(object sender, EventArgs e)
{
if (ActiveControl != null && ActiveControl is SplitContainer)
focusAllTheText(((SplitContainer)ActiveControl).ActiveControl, EventArgs.Empty);
}