Не могу сфокусироваться на каком-либо элементе управления после закрытия диалога - PullRequest
0 голосов
/ 04 июня 2019

Я показываю некоторые записи базы данных в диалоге. Когда я нажимаю какую-либо конкретную запись, эта запись заполняется до активной формы.
Но я хочу сосредоточиться на кнопке, когда мой диалог закрывается. Итак, я написал следующий код для закрытия формы Evennt.

private void frmDG_RecordSelection_FormClosing(object sender, FormClosingEventArgs e)
{
    RecordSelectionStatus.Text = "False";
    Form TargetForm = Home.ActiveMdiChild;

    Button SelectRefConsultant = (Button)TargetForm.Controls.Find("btnSelectRefConsultant_NI", true).SingleOrDefault();
    SelectRefConsultant.Focus();
    TargetForm.ActiveControl = SelectRefConsultant;                                       
}

Но это не работает. Фокус все равно остается на прежнем месте. Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 04 июня 2019

Я предполагаю, что диалог является модальным ... Вместо того, чтобы делать это в FormClosing, сделайте это после вызова ShowDialog(). Если нет, попробуйте использовать событие FormClosed.

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

0 голосов
/ 04 июня 2019

Если frmDG_RecordSelection также является MDIChild, то этой формой является Home.ActiveMDIChild. Это закрыто.

Но если frmDG - это просто диалог, проблема в другом.

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

Гораздо проще сделать это из формы MDI. Я не знаю, как вы это запрограммировали, но я полагаю, что-то вроде этого:

//this is in your MDI form
void OnRecordSelected(...)
{
    frmDG yourDialog = new frmDG();
    frmDG.ShowModal();

    frmDG.Dispose();
}

В этом случае вам придется установить фокус после удаления frmDG.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...