日期:2014-05-18  浏览次数:21200 次

c# winform 如何用子窗体整体刷新父窗体?
c# winform 如何用子窗体整体刷新父窗体?

A窗体是父窗体
A窗体里打开了子窗体B
B b = new B();
b.ShowDialog();

B窗体里改了数据,想要关闭B窗体时把改动的数据显示到A窗体上

A窗体的数据没有在容器里,是直接在form里的label

------解决方案--------------------
用静态变量来传递!

关闭后发生
------解决方案--------------------
FormA:

B b = new B(); 
b.ShowDialog();
if(b.dialogResult==dialogResult.Ok)
{
 this.Refresh();
}

BForm关闭事件:
this.Hide();
this.DialogResult=DialogResult.Ok;
------解决方案--------------------
楼上的是种方法,不过我想你更改组件的可见性级别,属性的Modifiers为public(默认为Private)的话,从而达到直接访问,这或许比传值要好。
------解决方案--------------------

MainForm是父窗体,
ChildForm是子窗体,
我们在子窗体中修改父窗体的txtName(TextBox控件)的值,

在子窗体添加个构造函数
private MainForm mainForm;
public ChildForm(MainForm mainForm)
{
this.mainForm=mainForm;
}

private void Amend()
{
mainForm.txtName="已经在子窗体中修改";
this.Close();
}
txtName这个TextBox这个控件设为Public(假设存在这个控件的话)

所谓的窗体传值就是这个样子了,其实也可以直接将txtName这个控件直接传过来修改
------解决方案--------------------
B b = new B(); 
b.ShowDialog(); 

在 B里面a.update
当然必须把A传入B!
------解决方案--------------------
在B窗体定义事件..
让A窗体注册B窗体的事件..

B更新数据的时侯,触发事件..

A响应事件,更新数据.
------解决方案--------------------
用委托!
------解决方案--------------------
探讨
用委托!