VS2010 中关闭子窗体刷新父窗体怎么实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2010 中关闭子窗体刷新父窗体怎么实现相关的知识,希望对你有一定的参考价值。

Form1窗体,添加一个button1跟一个textBox1
代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1

public partial class Form1 : Form

public Form1()

InitializeComponent();


private void button1_Click(object sender, EventArgs e)

Form2 InputDialog = new Form2(this);
InputDialog.ShowDialog(this);


public void refresh()

textBox1.Text = "success";
MessageBox.Show("成功在关闭子窗体时更新了父窗体内容!");




Form2构造窗体,设置FormClosing就好了,代码如下:
程序代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1

public partial class Form2 : Form

public Form2()

InitializeComponent();


public Form1 Gz_fm;
public Form2(Form1 t_Form1)

InitializeComponent();
Gz_fm = t_Form1;


private void Form2_FormClosing(object sender, FormClosingEventArgs e)

Gz_fm.refresh();


参考技术A 创建子窗体时,将父窗体作为参数传给子窗体,并在子窗体中使用全局变量保存,
当子窗体关闭事件中调用父窗体的对外(public)方法,
这个方法就可以执行刷新父窗体代码,当然也可以进行其他操作
参考技术B 以下是在CSDN上看到的:

//你在主窗体调用子窗体事件里面写:
子窗体f = new 子窗体();
f.Owner = this;
f.ShowDialog();
if (f.DialogResult == DialogResult.OK)

//子窗体上面点击确定按钮想执行的内容,这里添加内容后可以重新绑定,如果datagridview是bingsource绑定的话,直接把数据源给bingsource即可


//在子窗体窗体加载事件里面写:
确定按钮.DialogResult = DialogResult.OK;
取消按钮.DialogResult = DialogResult.Cancel;追问

现在做的没有登录窗口,就是主窗口和子窗口,名为mainpage,userdetail,用的是servicelight,具体的刷新事件怎么实现呢

追答

懒得回答~

参考资料:CSDN BBS

参考技术C 提供2个思路:
1、把主窗体作为一个变量传递到子窗体,把子窗体中需要刷新的主窗体的控件和变量设置为public,在子窗体的关闭事件(FormClosing)事件中写刷新主窗体的代码;
2、在子窗体中添加一个委托public void delegate Fresh();添加 public event Fresh FreshMain() (公开事件),在子窗体的关闭事件(FormClosing)中添加代码
if(this.FreshMain != null)
FreshMain ();
然后在主窗体中初始化该子窗体的时候添加事件处理代码就可以了。
参考技术D 如果类似这种登录窗口后近路主界面,在点击登录事件添加,this.close,然后在主窗口事件中添加: Login a = new Login();//Login为登录窗体名
a.MdiParent = this.MdiParent;
//a.WindowState = FormWindowState.Maximized;
a.ShowDialog(); 就可追问

现在做的没有登录窗口,就是主窗口和子窗口,名为mainpage,userdetail,用的是servicelight,具体的刷新事件怎么实现

追答

servicelight??不好意思,没接触过?是什么能说下吗?

php 窗体关闭以后怎样自动刷新父页面

你说的是弹出框吧,给关闭设置一个动作,用JS去reload一些父窗口就好了。 参考技术A 请用js,你的动作是浏览器,跟php无关~
请baidu一下:js关闭窗口刷新父窗口

以上是关于VS2010 中关闭子窗体刷新父窗体怎么实现的主要内容,如果未能解决你的问题,请参考以下文章

请问怎样在MDI的命令中关闭子窗体?

在 Xamarin 中关闭子窗体后触发 Main Page 的功能

C# winform怎么实现子窗体关闭时刷新父窗体数据

在父窗体中用showModalDialog方式打开一个页面,并在页面中删除一条记录,成功后刷新本页面,再关闭本页面

关于winform子窗体刷新父窗体

js 关闭子窗体时如何刷新父窗体