首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

100分,WinForm中父窗体是用户控件,子窗体如何刷新他

2012-01-23 
100分,WinForm中父窗体是用户控件,子窗体怎么刷新他WinForm中,如果父窗体是一般的窗体好做.但现在问题是当

100分,WinForm中父窗体是用户控件,子窗体怎么刷新他
WinForm中,如果父窗体是一般的窗体好做.
但现在问题是当父窗体是一个用户控件时,怎么让子窗体刷新他


[解决办法]
将父窗体(就是那个用户控件)声明为public static,子窗体就可以通过父窗体的变量来操作
[解决办法]
委托
[解决办法]
用模块
[解决办法]
把你要用的父窗体的声明代码写在模块中,调用模块来启动父窗体
[解决办法]
委托吧,但是也要先得到父窗体的实例才行
[解决办法]
看你需要父窗体作什么操作了,在子窗体中用parent属性可以获取父窗体对象。如果只是简单的刷新操作,用这个就足够了,但是如果还牵扯到别的操作。那就看你测自窗体是Show呢还是ShowDialog,功能不同,需求也不同呀!
[解决办法]
parent 只能调用父窗体的对象,但是不能引起父窗体的刷新
因为父窗体已经在内存中
所以需要借用模块
[解决办法]
winform刷新?还真没试过.
[解决办法]
是的 Module
你把父窗体声明写在Module里,
[解决办法]
Invalidate();
[解决办法]
委托回调...
[解决办法]
try..

http://community.csdn.net/Expert/topic/5189/5189957.xml?temp=.6943018

[解决办法]
this.Parent.Invalidate();

或者

this.TopLevelControl.Invalidate();
[解决办法]

CON-如何在子窗体(被调用者)中实现对其父窗体(调用者)的刷新呢?
网络上有几种方法,先总结如下:
调用窗体(父):Form1,被调用窗体(子):Form2
方法1: 所有权法
//Form1:
//需要有一个公共的刷新方法
public void Refresh_Method()
{
//...
}
//在调用Form2时,要把Form2的所有者设为Form1
Form2 f2 = new Form2() ;
f2.Owner = this;
f2.ShowDialog() ;
//Form2:
//在需要对其调用者(父)刷新时
Form1 f1 ;
f1 = (Form1)this.Owner;
f1.Refresh_Method() ;
方法2:自身传递法
//Form1:
//需要有一个公共的刷新方法
public void Refresh_Method()
{
//...
}
Form2 f2 = new Form2() ;
f2.ShowDialog(this) ;
//Form2:
private Form1 p_f1;
public Form2(Form1 f1)
{
InitializeComponent();
p_f1 = f1;
}
//刷新时
p_f1.Refresh_Method() ;
方法3:属性法
//Form1:
//需要有一个公共的刷新方法
public void Refresh_Method()
{
//...
}
//调用时
Form2 f2 = new Form2() ;
f2.P_F1 = this;
f2.Show() ;

//Form2:
private Form1 p_f1;
public Form1 P_F1
{
get{return p_f1;}
set{p_f1 = value;}
}
//刷新时
p_f1.Refresh_Method() ;
方法4:委托法
//声明一个委托
public delegate void DisplayUpdate();
//Form1:
//需要有一个公共的刷新方法
public void Refresh_Method()
{
//...
}
//调用时
Form2 f2 = new Form2() ;
f2.ShowUpdate += new DisplayUpdate(Refresh_Method) ;
f2.Show() ;
//Form2:
//声明事件
public event DisplayUpdate ShowUpdate;
//刷新时,放在需要执行刷新的事件里
ShowUpdate();

热点排行