C# 按钮只在第二次点击自定义弹出窗口c时起作用
当我在表单之间移动时,按钮按预期工作,但当我关闭自定义弹出窗口时,只需几秒钟,点击任何按钮就会触发它 这是我用来加载自定义弹出窗口的代码C# 按钮只在第二次点击自定义弹出窗口c时起作用,c#,winforms,onclick,popup,C#,Winforms,Onclick,Popup,当我在表单之间移动时,按钮按预期工作,但当我关闭自定义弹出窗口时,只需几秒钟,点击任何按钮就会触发它 这是我用来加载自定义弹出窗口的代码 public void loadPopUp(Form from, Form to) { to.Tag = from; to.Show(from); } public void closePopUp(string formName) { for (int i = Application.OpenForms.Count - 1; i &g
public void loadPopUp(Form from, Form to)
{
to.Tag = from;
to.Show(from);
}
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();
}
}
这是我用来关闭自定义弹出窗口的代码
public void loadPopUp(Form from, Form to)
{
to.Tag = from;
to.Show(from);
}
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();
}
}
注意:这不是asp.net应用程序您的代码中应该有其他内容,或者您可以在主窗口中创建一些内容来更改表单引擎的正常行为。我已经尝试使用上面的代码用LinqPAD构建一个示例应用程序,我的行为与预期一样正常。当我关闭弹出窗口时,焦点将恢复到主窗体 不过,您可以使用Tag属性中的main form saved实例调用Activate方法并将焦点恢复到main form
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();
}
注意,我使用对基窗体类的转换,因此您的代码不依赖于由特定类实例创建的弹出窗口。这是可能的,因为Activate是一个基类方法。从哪个事件处理程序调用closePopup?单击我的自定义popupSo在自定义popup中关闭弹出窗口?那你为什么要在所有的申请表上循环?不只是这个吗。接近;?是的,这是可以做到的,但这并不能解决我隐藏的问题;也无济于事