我正在对话框中显示一些数据库记录。当我单击任何特定记录时,该记录将填入Active Form。
但是我想在对话框关闭时将重点放在按钮上。因此,我在关闭表单时编写了以下代码。
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;
}
但是它不起作用。焦点仍然保持在原先的位置。我想念什么?
答案 0 :(得分:1)
我假设对话框是有模式的...调用FormClosing
之后,不要在ShowDialog()
中执行此操作。如果不是,请尝试使用FormClosed
事件。
我认为您的代码无法正常工作,因为Form
关闭时,它仍然具有模式焦点。
答案 1 :(得分:0)
如果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之后设置焦点。