当前位置:  编程技术>.net/c#/asp.net

c# 委托与事件的小例子

    来源: 互联网  发布时间:2014-08-30

    本文导语:  c#开发的winform小例子,大多以字符界面呈现,为了测试c#的委托与事件,也写了一个简单的winform,与大家共同学习。 1、文件 Common.cs:   代码示例: using System; using System.Collections.Generic; using System.Text; namespace DelegateAndEvent.App_Cod...

c#开发的winform小例子,大多以字符界面呈现,为了测试c#的委托与事件,也写了一个简单的winform,与大家共同学习。

1、文件 Common.cs:
 

代码示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace DelegateAndEvent.App_Code
{
public class Common
{
//定义全局变量.
public static string txt = "";
#region 定义方法
public string HelloCSharp(string name)
{
txt += "hello " + name;//这样做是为了看到委托可以执行多个方法.
return "hello " + name;
}
public string HiCSharp(string name)
{
txt += "hi " + name;
return "hi " + name;
}
#endregion
#region 定义委托
//定义委托和定义方法类似,区别是加个delegate.去掉方法体,只写方法签名.
public delegate string SayHi(string name);
//委托可以像普通变量一样使用.区别在于可以把多个方法赋给委托.
public SayHi dlgt1, dlgt2;
//使用委托
public void useDelegate(string name, SayHi sayHi)
{
sayHi(name);
}
#endregion
#region 事件
//声明事件
public event SayHi hiEvent;
//触发事件
public void causeEvent()
{
hiEvent += HelloCSharp;
hiEvent += HiCSharp;
if (hiEvent != null)
{
hiEvent("crane");
}
}
#endregion
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace DelegateAndEvent.App_Code
{
public class Common
{
//定义全局变量.
public static string txt = "";
#region 定义方法
public string HelloCSharp(string name)
{
txt += "hello " + name;//这样做是为了看到委托可以执行多个方法.
return "hello " + name;
}
public string HiCSharp(string name)
{
txt += "hi " + name;
return "hi " + name;
}
#endregion
#region 定义委托
//定义委托和定义方法类似,区别是加个delegate.去掉方法体,只写方法签名.
public delegate string SayHi(string name);
//委托可以像普通变量一样使用.区别在于可以把多个方法赋给委托.
public SayHi dlgt1, dlgt2;
//使用委托
public void useDelegate(string name, SayHi sayHi)
{
sayHi(name);
}
#endregion
#region 事件
//声明事件
public event SayHi hiEvent;
//触发事件
public void causeEvent()
{
hiEvent += HelloCSharp;
hiEvent += HiCSharp;
if (hiEvent != null)
{
hiEvent("crane");
}
}
#endregion
}
}

2、文件 MainFrm.cs:
 

代码示例:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DelegateAndEvent.App_Code;
namespace DelegateAndEvent
{
public partial class MainFrm : Form
{
Common common = new Common();
public MainFrm()
{
InitializeComponent();
}
private void btnOk_Click(object sender, EventArgs e)
{
//this.lblShow.Text += common.HelloCSharp("tree");
//测试委托
common.dlgt1 = common.HelloCSharp;//只写方法签名,不加()
common.dlgt1 += common.HiCSharp;//虽然两个方法都调用了,但是返回值只返回最后一次调用的值.
//this.lblShow.Text += common.dlgt1("tree");//使用委托就像使用方法一样.
//this.lblShow.Text = Common.txt;
//用委托做参数
//common.useDelegate("tree", common.dlgt1);
//this.lblShow.Text = Common.txt;
//事件
/*这里的问题是不能用common.hiEvent();这样引用.
原因是需要在这个类里定义一个事件变量.
*/
common.causeEvent();
this.lblShow.Text = Common.txt;
}
}
}

    
 
 

您可能感兴趣的文章:

  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • c#委托与多播委托的实例代码
  • C# 委托(delegate) 的小例子
  • C#实现的几种委托方式介绍
  • C#事件处理和委托event delegate实例简述
  • C#学习笔记之多播委托的例子
  • c# 委托浅析
  • C#委托初级使用的实例代码
  • C#委托delegate实例解析
  • C# 中如何利用lambda实现委托事件的挂接
  • C#基础之泛型委托实例教程
  • 深入c# Func委托的详解
  • C#委托所蕴含的函数指针概念详细解析
  • C#基础之委托用法实例教程
  • C#用Lambda和委托实现模板方法
  • c#委托把方法当成参数(实例讲解)
  • C#匿名委托和Java匿名局部内部类使用方法示例
  • c# 委托和事件实例学习
  • C#入门学习笔记之事件和委托的实例
  • C# 委托(跨窗体操作控件)实例流程讲解
  • 基于C#委托的深入分析
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 深入委托与多播委托的详解
  • 使用BeginInvoke,EndInvoke异步调用委托的代码
  • 基于使用BeginInvoke,EndInvoke异步调用委托的实现代码
  • winform使用委托和事件来完成两个窗体之间通信的实例
  • 探讨:如何使用委托,匿名方法对集合进行万能排序
  • 经典的委托排序(深入分析)
  • c#委托学习示例分享
  • C#零基础学习理解委托
  • 探讨如何用委托处理排序
  • c#委托详解和和示例分享
  • c# 委托反射 DataTable转换为实体集的方法
  • c#使用委托反射将DataTable转换为实体集的代码
  • c#中利用委托反射将DataTable转换为实体集的代码
  • C# 委托的三种调用示例(同步调用 异步调用 异步回调)
  • 学习 asp.net 的事件与委托
  • C#泛型:泛型特点、泛型继承、泛型接口、泛型委托学习笔记
  • c#并行任务多种优化方案分享(异步委托)
  • C#中常见的系统内置委托用法详解
  • 深入理解C#中常见的委托


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3