当我在表单按钮之间移动按预期工作时,但是当我关闭我的自定义弹出窗口时,只需几秒钟点击任何按钮就会触发它
这是用于加载我的自定义弹出窗口的代码
public void closePopUp(string formName)
{
for (int i = Application.OpenForms.Count - 1; i >= 0; i--)
{
string name = Application.OpenForms[i].Name; //for debugging only
if (Application.OpenForms[i].Name == formName)
Application.OpenForms[i].Close();
}
}
这是我用来关闭自定义弹出窗口的代码
dataframe
注意:这不是asp.net应用程序
答案 0 :(得分:1)
您的代码中应该有其他内容,或者您在主窗口中创建了一些更改表单引擎正常行为的内容。我已经尝试使用上面的代码使用LinqPAD构建一个示例应用程序,并且我有正常的行为。当我关闭弹出窗口时,焦点将恢复到主窗体。
尽管如此,您可以使用Tag属性中的主窗体保存实例来调用Activate方法并将焦点恢复为主窗体。
public void closePopUp(string formName)
{
// No need to loop over all application OpenForms if you just want
// to close this popup
// for (int i = Application.OpenForms.Count - 1; i >= 0; i--)
// {
// string name = Application.OpenForms[i].Name; //for debugging only
// if (Application.OpenForms[i].Name == formName)
// Application.OpenForms[i].Close();
//}
var mainForm = this.Tag as Form;
this.Close();
if(mainForm != null)
mainForm.Activate();
}
注意,我使用强制转换为基本Form类,因此您的代码不依赖于特定类实例创建的弹出窗口。这是可能的,因为Activate是一种基类方法。