首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#在关闭Form2时更新Form1

C#在关闭Form2时更新Form1
EN

Stack Overflow用户
提问于 2013-08-27 06:19:42
回答 5查看 4.3K关注 0票数 1

我遇到过这样一种情况:用户单击Form1上的一个按钮来打开Form2。Form1的load事件根据从数据库返回的数据填充treeview。当他们将数据输入到Form2中时,数据库会更新,但树视图不会。如果我关闭并重新打开winform,那么它会拉入新的数据。

我已经研究了几个小时,我发现了如何从Form2调用Form1中的getdata方法,但它不起作用。我可以在调试模式下跟踪它,并验证我的dataReader是否包含新值,但树视图不更新。我是这样做的。

代码语言:javascript
运行
复制
//In form 2
Form1 frm = new Form1();
frm.getData();

什么都没发生。如果我说frm.Show(),那么它将打开一个新的Form1窗口,其中包含更新的数据,但我希望treeview在已经打开的Form1窗口中进行更新。

我相信这是问题的根源。我对frm的任何调用都发生在一个新窗口中。如何从Form2访问现有Form1窗口的getData()方法?

EN

回答 5

Stack Overflow用户

发布于 2013-08-27 11:08:18

在不知道如何创建Form2并在Form1中显示它的情况下,也就是说,如果是后者,您使用的是.Show还是.ShowDialog,您所要做的就是使用DialogResult来确定是否调用您的getData方法。

代码语言:javascript
运行
复制
Form2 frm2 = new Form2();
if (frm2.ShowDialog() == DialogResult.OK)
{
    getData();
}

如果你使用的是Show方法,你可以监听form2的FormClosingFormClosed事件,并在你的Form1中响应它。就像这样。

代码语言:javascript
运行
复制
private void button1_Click(object sender, EventArgs e)
{
    Form2 frm2 = new Form2();
    frm2.FormClosed += frm2_FormClosed;
    frm2.Show();
}

void frm2_FormClosed(object sender, FormClosedEventArgs e)
{
    getData(); 
}

private void getData()  //Surrogate for your getData method
{
    MessageBox.Show("Getting Data");
}
票数 1
EN

Stack Overflow用户

发布于 2018-12-10 05:42:58

我发现完成这项任务的最好方法是在关闭form2模式后在form1上调用一个方法。

Form1

代码语言:javascript
运行
复制
private void addButton_Click(object sender, EventArgs e)
{
    // Create an instance of form 2
    Form2 secondForm = new Form2();

    // Display form 2
    secondForm.ShowDialog();

    // Call a method on form1 to update information on form 1. Any code listed after 
    // the show dialog call will process after Form2 is closed.
    UpdateForm1();
}

private void UpdateForm1()
{
    // Code your updates to form1 here
}
票数 1
EN

Stack Overflow用户

发布于 2013-08-27 06:48:28

我认为您的问题在于您正在创建一个新的Form1实例,而不是传入对原始Form1的引用。如果传入对原始Form1的引用,则将更新该实例。不是新的。

请看这篇文章,了解与我认为你所经历的问题类似的问题。

refreshing treeview component from other form

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18453972

复制
相关文章

相似问题

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