考试大题,各位高手求帮忙啊 C#
如在Windows窗体应用程序中,Form1中的定义的一个方法:voidChangeColor(),在Form2中,如要执行Form1中的ChangeColor方法,请叙...
如在Windows窗体应用程序中,Form1中的定义的一个方法:void ChangeColor( ),在Form2中,如要执行Form1中的ChangeColor方法,请叙述如何用“委托”的方式来实现。(10分)
展开
3个回答
展开全部
在from2后台代码类中 添加如下代码:
public delegate void Refreshdata();//Refreshdata可以换成其他名字
public Refreshdata refreshdata; //refreshdata可以换成其他名字
//定义委托
然后假设当form1中的某个按钮单击后出现form2,那么在单击事件中添加如下代码:
form2 f2 = new form2;
f2.refreshdata = ChangeColor;//指定委托所调用的方法
f2.ShowDialog();
当form2中某个事件来调用form1的ChangeColor方法,你只要在那事件下添加如下代码:
this.refreshdata();//调用委托所指方法
public delegate void Refreshdata();//Refreshdata可以换成其他名字
public Refreshdata refreshdata; //refreshdata可以换成其他名字
//定义委托
然后假设当form1中的某个按钮单击后出现form2,那么在单击事件中添加如下代码:
form2 f2 = new form2;
f2.refreshdata = ChangeColor;//指定委托所调用的方法
f2.ShowDialog();
当form2中某个事件来调用form1的ChangeColor方法,你只要在那事件下添加如下代码:
this.refreshdata();//调用委托所指方法
展开全部
public delegate void EventHandler(object sender, EventArgs e);
public event EventHandler Change;
private void OnChange()
{
EventHandler Handler = this.Change;
if (PropertyChanged != null)
{
Handler(this,new EventArgs());
}
}
Form1 obj = new Form1();
this.OnChange += obj.ChangeColor;
public event EventHandler Change;
private void OnChange()
{
EventHandler Handler = this.Change;
if (PropertyChanged != null)
{
Handler(this,new EventArgs());
}
}
Form1 obj = new Form1();
this.OnChange += obj.ChangeColor;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在Form2里面新建一个范围修饰符为public的委托类型,返回值为VOID,委托名称随意。接着新建类型为刚才新建的委托类型的一个实例,访问修饰符为public,实例名随意,接着在Form1实列化Form2的时候用Form2的实例点刚才在Form2里面新建的委托实例等于this.ChangeColor; 现在在Form2里面就可以直接调用刚才创建的那个委托实例了!
调用如下:
委托实例名();
调用如下:
委托实例名();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询