C#使用委托的步骤浅析

本文浅析了C#使用委托的步骤。分享给大家供大家参考。具体分析如下:

委托可以理解为C或C++里面的函数指针,调用委托其实是调用被委托的方法。

简单的使用委托的步骤如下:

1.定义委托


代码如下:

// 定义委托使用关键字 delegate
private delegate void SetProgressBarValueDelegate(int value);

2.声明委托


代码如下:

private SetProgressBarValueDelegate setProgressBarValue;

3.实例化委托


代码如下:

setProgressBarValue = new SetProgressBarValueDelegate(SetProgressBarValue1);

SetProgressBarValue1是被委托的方法名称,参数类型要和委托的类型保持一致。其原型如下:

代码如下:

// 设置进度条1值
private void SetProgressBarValue1(int value)
{
    pgProgressBar1.Value = value;
}

4.使用委托:


代码如下:

SetProgressBarValueMethod(setProgressBarValue);

// 设置进度条值
private void SetProgressBarValueMethod(SetProgressBarValueDelegate setProgressBarValueDelegate)
{
    for (int i = 1; i <= 100; i++)
    {
 Application.DoEvents();
 Thread.Sleep(50);
 setProgressBarValueDelegate(i);  
    }
}

/* 此命令可告诉系统继续处理用户界面的其它事件,避免假死
 * 等同于 Visual Basic 6.0 的 DoEvents()
 * 等同于 易语言 的 处理事件() */
 Application.DoEvents();
/* 此命令用于线程暂停(参数:毫秒)
 * 此处用在主线程中,会导致假死,加暂停只为了看得更清楚 */

Thread.Sleep(50);

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

(0)

相关推荐

  • C#通过委托调用Button单击事件的方法

    这里介绍通过委托取消Button事件switch-case的方法.需要注意的是,事先要按顺序在各个Button的Tag属性中设置0.1.2.3--等序号,其作用请详看代码. /*定义委托*/ public delegate 类型或viod MethodDelegate(参数1, 参数2); private void buttonC_Click(object sender, EventArgs e) { Button button = (Button)sender; /*向委托添加方法*/ Met

  • .Net常见问题之C#中的委托

    有朋友说委托和C++中的函数指针很像,但是两者真的有差别.在C++中,函数指针不是类型安全的,它所指向的是内存中的某一个位置,但是我们没有办法判断这个指针实际指向的是什么,对于参数和返回类型更难以判断了.但是.NET中的委托则完全不同,它是类型比较安全的类,我们很明白的知道委托定义的返回类型和参数类型.它不仅包含了方法的引用,而且包含了方法的引用.下面通过一段代码给大家分享下对委托的理解: 什么是委托 在实际的开发过程中,有时某个方法执行的操作并不是针对数据进行的,而是针对另一个方法,但是这个方

  • C#泛型委托的用法实例分析

    本文实例讲述了C#泛型委托的用法.分享给大家供大家参考.具体分析如下: 冒泡排序大家都知道,例如一个整形数组,可以用冒泡排序来使它按从小到大的顺序排序, 但它仅限于了按整形数组来排序,如何做到按任意类型进行排序呢,例如按一个类的某个属性进行排序? 举例说明:定义一组以类MEmployee为元素的数组,按MEmployee的Salary属性进行排序,类似的可以引伸为对其他类型的比较 元素类定义: public class MEmployee { public string Name { get;

  • C#中委托用法实例分析

    本文实例讲述了C#中委托用法.分享给大家供大家参考.具体分析如下: Delegate委托,在.NET中应用的非常广泛.会涉及到Lambda表达式,事件,匿名方法等. 那么何为委托? 通俗的来讲,委托除了必须指定delegate关键字和没有方法实体之外,和指定方法没有更多区别.你可以当它是一个占位符,比如你在写代码的时候并不知道你将要处理的是什么.你只需要知道你将要引入的参数类型和输出类型是什么并定义它即可.这就是书本上所传达的方法签名必须相同的意思. 下面我们来定义一个基本的委托: public

  • C#中委托的+=和-=深入研究

    写在前面 为什么会突然想说说委托?原因吗,起于一个同事的想法,昨天下班的路上一直在想这个问题,如果给委托注册多个方法,会不会都执行呢?为了一探究性,就弄了个demo研究下. += 大家都知道委托都继承自System.MulticastDelegate,而System.MulticastDelegate又继承自System.Delegate,可以通过+=为委托注册多个方法.那么他们是否都执行了呢?执行的结果又是怎样的呢?有返回值和没返回值的是否结果是否一样?那就试着说说+=都干了哪些事? 测试代码

  • C#中的委托介绍

    什么是委托? 之前写了事件的介绍:http://www.jb51.net/article/59461.htm 这里也把委托相关知识也总结一下. 委托是c#中类型安全的,可以订阅一个或多个具有相同签名方法的函数指针 声明委托的方式:delegate 返回值类型 委托类型名(参数) 比如: 复制代码 代码如下: delegate void StringProcess(string s); 注意:这里的除了前面的delegate,剩下部分和声明一个函数一样,但是StringProcess不是函数名,而

  • C#中自定义事件和委托实例

    在windows 编程中用到最多的就是控件的事件了,微软给我们很好的方式,把注意力放到事件执行方法的设计和编码上,但是但我们真正弄懂了事件的真正出发执行原理的话,对我们的编程的提高真是非常榜的,例如在windows编程中 如果我单击了一个button按钮触发了button 的click事件  Button1_Click(){} ,但是有时候我们编程的时候,不但想要触发button 的单击事件,我还想要把其他的时间也要调用下来顺序执行,要实现这种方式,除了在方法最后对其他方法的调用,还可以利用将其

  • C#使用委托的步骤浅析

    本文浅析了C#使用委托的步骤.分享给大家供大家参考.具体分析如下: 委托可以理解为C或C++里面的函数指针,调用委托其实是调用被委托的方法. 简单的使用委托的步骤如下: 1.定义委托 复制代码 代码如下: // 定义委托使用关键字 delegate private delegate void SetProgressBarValueDelegate(int value); 2.声明委托 复制代码 代码如下: private SetProgressBarValueDelegate setProgre

  • JavaScript 隐性类型转换步骤浅析

    这里说的隐性类型转换,是==引起的转换. 如果存在NaN,一律返回false 再看有没有布尔,有布尔就将布尔转换为数字 接着看有没有字符串, 有三种情况,对方是对象,对象使用toString进行转换:对方是数字,字符串转数字:对方是字符串,直接比较:其他返回false 如果是数字,对方是对象,对象取valueOf进行比较, 其他一律返回false null, undefined不会进行类型转换, 但它们俩相等 这个顺序一定要死记,这是面试时经常问到的. 下面是一些杂题,自己做做 0 == und

  • 浅析C# 委托(Delegate)

    C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针.委托(Delegate) 是存有对某个方法的引用的一种引用类型变量.引用可在运行时被改变. 委托(Delegate)特别用于实现事件和回调方法.所有的委托(Delegate)都派生自 System.Delegate 类. 声明委托(Delegate) 委托声明决定了可由该委托引用的方法.委托可指向一个与其具有相同标签的方法. 例如,假设有一个委托: public delegate int MyDelegate (string

  • 深入浅析安装PhpStorm并激活的步骤详解

    一.官网下载安装包 linux安装包:http://www.jetbrains.com/phpstorm/download/#section=linux windows安装包:http://www.jetbrains.com/phpstorm/download/#section=windows mac安装包:http://www.jetbrains.com/phpstorm/download/#section=mac 二.PhpStrom安装 1.Linux安装 1.解压PhpStrom安装包

  • 浅析JavaScript中的事件委托机制跟深浅拷贝

    今天聊下JavaScript中的事件委托跟深浅拷贝 一.事件委托 首先呢,介绍一下事件绑定 //方法一:通过onclick <button onclick="clickEvent()">点击</button> <script> function clickEvent(){ alert("点击事件"); } </script> //方法二:通过addEventListener <button id="bt

  • 浅析NFS服务器原理以及搭建配置部署步骤

    目录 NFS服务简介 什么是NFS? NFS挂载原理 NFS服务器到底使用哪个端口来进行数据传输呢? RPC与NFS通讯原理 那么RPC又是如何知道每个NFS功能的端口呢? NFS客户端和NFS服务器通讯过程 Linux下NFS服务器部署 NFS服务所需软件及主要配置文件 RPC主程序:rpcbind NFS主程序:nfs-utils NFS的相关文件 服务端安装NFS服务步骤 第一步:安装NFS和rpc 第二步:启动服务和设置开启启动 第三步:配置共享文件目录,编辑配置文件 NFS客户端挂载配

  • python模块导入方式浅析步骤

    目录 1.模块的使用 2.导入模块并使用 3.模块的导入方式之from-import 语句 4.__all__变量用来控制* 5.总结 首先啊,在python中我们熟知的py文件就是一个模块,也就是换言之以py结尾的Python源代码文件都是一个模块我就简单概括一下了直接上代码 1.模块的使用 使用模块里的工具前需要导入模块, 模块的导入方式之import······· 单个:import 模块名多个:import 模块1import 模块2import 模块1,模块2(一般不推荐使用)(多个)

  • JS中的事件委托实例浅析

    本文实例讲述了JS中的事件委托.分享给大家供大家参考,具体如下: 事件委托(也叫事件代理),其实这个问题也简单,要想弄明白事件委托,我们先要把事件冒泡的机制搞清楚.举个事件冒泡的例子: <ul> <li>点击</li> </ul> <script> var ul=document.getElementsByTagName('ul')[0]; var li=document.getElementsByTagName('li')[0]; ul.add

  • 浅析Vue项目中使用keep-Alive步骤

    vue 2.1.0之前,实现方式: 1 /router/index.js 配置路由元信息keepAlive: true { path: "user", name: "用户管理", component: User, meta: { requireAuth: true, keepAlive: true // 用户列表需要被缓存 } }, 2 /app.vue <keep-alive> <router-view v-if="$route.met

  • 深入浅析Python科学计算库Scipy及安装步骤

    一.Scipy 入门 1.1.Scipy 简介及安装 官网:http://www.scipy.org/SciPy 安装:在C:\Python27\Scripts下打开cmd执行: 执行:pip install scipy 1.2.安装Anaconda及环境搭建(举例演示) 创建环境:conda create -n env_name python=3.6 示例:   conda create -n Py_36 python=3.6  #创建名为Py_367的环境 列出所有环境:conda info

随机推荐