读书人

c# winform 怎么用子窗体整体刷新父窗

发布时间: 2012-05-21 18:04:41 作者: rapoo

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响应事件,更新数据.
[解决办法]
用委托!
[解决办法]

探讨
用委托!

读书人网 >C#

热点推荐