当前位置: 首页 > 编程笔记 >

C#使用委托(delegate)实现在两个form之间传递数据的方法

柯默
2023-03-14
本文向大家介绍C#使用委托(delegate)实现在两个form之间传递数据的方法,包括了C#使用委托(delegate)实现在两个form之间传递数据的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了C#使用委托(delegate)实现在两个form之间传递数据的方法。分享给大家供大家参考。具体分析如下:

关于Delegate【代理、委托】是C#中一个非常重要的概念,向前可以推演到C++的指针,向后可以延续到匿名方法、lambda表达式。

现在我就从一个最简单最实用的一个小例子出发分析一下Delegate的使用。

现在有两个窗体Form1和Form2。

两个按钮Button1(Form)和Button2(Form2)。

Form1的代码:

private void button1_Click(object sender, EventArgs e)
{
  Form2 frm = new Form2(textBox1.Text);
  frm.SetProperty += new Form2.DelegateText(SetProperty2);
  frm.ShowDialog();
}
private void SetProperty2()
{
  MessageBox.Show("ok");
}

Form2的代码:

public delegate void DelegateText();
public DelegateText SetProperty;
private void button2_Click(object sender, EventArgs e)
{
  SetProperty();
}

分析者两段简短的代码,可以看出一些Delegate的好处,之前我写这个功能的时候是将form1的对象传给form2,点击form2之后再铜鼓from1的对象调用form1的public方法,这样的代码总觉得很别扭,也就是所谓的类型不安全,需要公开所要调用的方法,还需要将form1的对象传递至form2中,显然不是最佳的方案。

现在有了Delegate问题就迎刃而解了,相当于new form2的时候,我让form2代替我去更新属性的操作,这样我的方法不需要暴露出来,而form2也只能调用这一个方法,也就达到了所谓的类型安全的说法,此虽是个小例子,但是却能管中窥豹,看到一些Delegate的好处。

希望本文所述对大家的C#程序设计有所帮助。

 类似资料:
  • 本文向大家介绍C#委托delegate实例解析,包括了C#委托delegate实例解析的使用技巧和注意事项,需要的朋友参考一下 所谓c#的委托就是说把函数当参数来传递。 这个在js完全就用不着搞什么委托东西,直接转就是了。而对于C#来说则不是这样! 一个函数,如果它的参数是函数,那么是这样子写的 : 意思是说这个将被传进来的函数是一个没有return的函数,就是public void, 它需要一个

  • 本文向大家介绍C#实现两个窗体之间数值传送的方法,包括了C#实现两个窗体之间数值传送的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现两个窗体之间数值传送的方法。分享给大家供大家参考,具体如下: 以下是本人常用的方法,其实方法很多,但我觉得这两种我比较好理解,要是哪位朋友有比较简单的易懂的其他方法,希望不吝赐教。 方法一: 比如要在FORM2里得到FORM1里的值,先在FORM

  • 问题内容: 我有两个单独的android应用程序,即AppA和AppB。我试图让AppA启动AppB(这是一个游戏应用程序)。用户玩完游戏(AppB)后,它将把游戏记录发送回AppA。 因此,AppA可以正确启动AppB,但是当用户玩完游戏(AppB)后,AppB在将数据发送回AppA时崩溃,并且出现了以下错误: 流程:com.joy.AppB,PID:20265 android.content.

  • 本文向大家介绍iOS实现两个控制器之间数据的双向传递,包括了iOS实现两个控制器之间数据的双向传递的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了iOS控制器之间数据的双向传递,供大家参考,具体内容如下 首先,有两个控制器,分别为控制器A、控制器B。 A->B:数据由控制器A传向控制器B,这叫做数据的顺传;数据由控制器B传向控制器A,这叫做逆传。 顺传:一般通过创建目标控制器对象,将数据

  • 我试图在我的android应用程序中的两个活动之间传递数据,我想使用HashMap(我不想使用Intent)。以下是我的代码: DataHolder.java 在第一个活动中设置值 在其他活动中获得价值 当我用它在activity1到activity2之间传递数据时,它会起作用,但在那之后,当在activity2到activity3之间传递数据时,返回null,因此强制转换为(整数)会导致错误。在

  • 问题内容: 我有两个 -我有和同赛格瑞“模式” -我有与(回FirstVC): 我创建的委托为: 下一个: 我的函数,在此函数中,我的委托用作: FirstVC: 请帮助我解决这个问题。 问题答案: 1)您需要将委托设置为prepareForSegue: 更新: 2)设为可选