传递委托,还是传递对象? 我有两个窗体A和B,在A上点击一个按钮弹出B,在窗体B上点击一个按钮,用来调用A的一个方法,那么我是把这个方法用委托的方式传递给B,还是把窗体A传递给B,在B上点击按钮的时候调用a.方法?传递A中方法的委托和传递A对象哪种方法好?为什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你说的是window程序吧两种方法都可以.但是用静态委托有个缺点,就是当你打开两个A窗口的时候.启动委托的时候,两个窗口中的事件都是执行的 不用传递委托。这类调用,有如下几种方法,仅供楼主参考:CON-如何在子窗体(被调用者)中实现对其父窗体(调用者)的刷新呢?网络上有几种方法,先总结如下:调用窗体(父):Form1,被调用窗体(子):Form2方法1: 所有权法//Form1://需要有一个公共的刷新方法public void Refresh_Method(){ //...}//在调用Form2时,要把Form2的所有者设为Form1Form2 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(); c# Excel 怎么根据索引获取某一列某一格数据 将IP转换成长整型的原理是什么? C#最小化窗体问题,麻烦大家了。 C# 手机短信 有没有人听说过三星sds,整体怎么样? 对于刚接触.NET没多久的新人来说,如何少走一些弯路 高难度问题,如何取机器的唯一码? C#webBrower这个表单要如何填呢?好像既没有name也没有id 急问急问:c#应用程序发电子邮件的问题 做一个计算器, 急!急!!急!!!:用C#开发WinCE手持终端程序时如何连接Oracle数据库? 高分(150分)求CAD二次开发的问题,请进
两种方法都可以.
但是用静态委托有个缺点,就是当你打开两个A窗口的时候.启动委托的时候,两个窗口中的事件都是执行的
这类调用,有如下几种方法,仅供楼主参考: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();