首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过不同的形式检测CloseEvent

通过不同的形式检测CloseEvent
EN

Stack Overflow用户
提问于 2017-07-14 09:15:51
回答 3查看 574关注 0票数 1

问题求解

短篇小说

我希望通过不同的形式检测"FormClosing()“事件,即当form1在form2中被实例化时,form2是否能够检测用户在form1中按exit?

长篇小说

我和我的团队正在开发一个windows表单应用程序。项目有两种形式:一种是主表单页面,另一种是通过这个主表单访问的。主表单如下所示:

第二个看起来是这样的:

如果在主窗体内按下"Ekle/Sil“按钮,您将被定向到表单2,在那里您可以编辑数据库条目。当您按主表单中的"SayfayıYenile“按钮时,从数据库中重新获取条目会刷新文本区域的内容。

我的问题是,当用户关闭第二个表单时,我想自动刷新主窗体。我的研究建议我应该使用"FormClosing()“事件来检测结束形式。但是,我想从主表单中检测到这一点。在第二个表单的源代码中实例化主表单似乎不是一个可靠的解决方案。有人能告诉我怎么做吗?

编辑

我解决了这个问题: 1)在主表单中创建了一个用于刷新页面的公共方法。2)在创建第二个窗体时,从主窗体发送"this“属性。3)在第二个调用此公共方法的表单中添加了一个"FormClosed()“处理程序。

尽管如此,我还是在寻找更好的解决方案。

编辑2

更好的解决方案InBetween's answer

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-14 09:36:30

只需使用新的子窗口窗体的Form.Closed事件即可。所有事情都是从主表单中处理的:

代码语言:javascript
复制
void EkleSil_Clicked(object sender, EventArgs e) //or whatever method is called when button is clicked
{
     var newChildForm = new ChildForm();
     newChildForm.Closed += childFormClosed;
     newChildForm.Show();
}

void childFormClosed(object sender, EventArgs e)
{
     ((Form)sender).Closed -=childFormClosed;
     updateShownData();
}
票数 0
EN

Stack Overflow用户

发布于 2017-07-14 09:19:47

可以在第二个窗体中创建事件,并在窗体关闭时引发该事件。在主窗体中处理事件,并在引发事件时刷新主窗体

票数 0
EN

Stack Overflow用户

发布于 2017-07-14 09:27:20

另一种选择是将Form1作为参数传递给Form2。然后在Form.Closing中使用Form2事件,并使用Form1引用触发某些内容。

代码语言:javascript
复制
Form1 form1Ref;

public Form2(Form1 mainform)
{
     form1Ref = mainform;
}

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
     form1Ref.SomeMethod();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45099144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档