`
cloudtech
  • 浏览: 4711099 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

C#事件解析

 
阅读更多

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace MyEvent
{
    public partial class Form1 : Form
    {
        //创建一个委托
        public delegate void ActionEventHandler(object sender, ActionCancelEventArgs ev); 
        public static event ActionEventHandler Action;//定义事件
        public Form1()
        {
            InitializeComponent();
            //把两个button点击事件用同一个方法处理
            button1.Click += new EventHandler(Button_Click);
            button2.Click += new EventHandler(Button_Click);
        }

        void Button_Click(object sender, EventArgs e)
        {
            Button bt = (Button)sender;
            label1.Text = "你现在点击的按钮是:"+bt.Text.ToString();
        }

        public class ActionCancelEventArgs : System.ComponentModel.CancelEventArgs
        {
            string message = String.Empty;
            public ActionCancelEventArgs() : base() { }
            public ActionCancelEventArgs(bool cancel) : base(cancel) { }
            public ActionCancelEventArgs(bool cancel, string message)
                : base(cancel)
            {
                this.message = message;
            }
            public string Message
            {
                get { return message; }
                set { message = value; }
            }
        }
        protected void OnAction(object sender, ActionCancelEventArgs ev)
        {
            if (Action != null)
            {
                Action(sender, ev);//这里注意这一句,这就是触发事件的语句,并将事件交由Action委托来处理
                                   //(就是在BusEntity中的Form1_Action方法)
            }
        }
        private void buttonRaise_Click(object sender, EventArgs e)
        {
            ActionCancelEventArgs cancelEvent = new ActionCancelEventArgs();
            BusEntity busentity=new BusEntity();
            OnAction(this, cancelEvent);
            if (cancelEvent.Cancel)
            {
                labelinfo.Text = cancelEvent.Message;
            }
            else {
                labelinfo.Text = busentity.TimeString;
            }
            
        }
    }
}



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyEvent
{
    public class BusEntity
    {
        public string time = String.Empty;
        public BusEntity()
        {
            //产生一个委托实例并添加到Form1产生的事件列表中
            Form1.Action += new Form1.ActionEventHandler(Form1_Action);
        }
        //事件处理程序
        void Form1_Action(object sender, Form1.ActionCancelEventArgs ev)
        {
            ev.Cancel = !DoAction();
            if (ev.Cancel)
            {
                ev.Message = "现在的时间秒数大于30。";
            }
        }
        private bool DoAction()
        {
            bool retVal = false;
            DateTime tm = DateTime.Now;
            if (tm.Second < 30)
            {
                time = "现在的时间是:" + DateTime.Now.ToLongTimeString();
                retVal = true;
            }
            else
            {
                time = "";
            }
            return retVal;
        }
        public string TimeString
        {
            get { return time; }
        }
    }
}


C#中使用事件需要的步骤:
1.创建一个委托

2.将创建的委托与特定事件关联(.Net类库中的很多事件都是已经定制好的,所以他们也就有相应的一个委托,在编写关联事件处理程序--也就是当有事件发生时我们要执行的方法的时候我们需要和这个委托有相同的签名)
3.编写事件处理程序
4.利用编写的事件处理程序生成一个委托实例
5.把这个委托实例添加到产生事件对象的事件列表中去,这个过程又叫订阅事件
分享到:
评论

相关推荐

    C#做的一个窗体解析DBC文件.rar_C# DBC frame_C# DBC文件解析_C# 解析DBC软件_DBC解析_c#解

    本项目是基于C#编程语言开发的一个窗体应用程序,用于解析DBC文件,帮助用户理解和提取DBC文件中的关键信息。 DBC文件的主要作用是存储CAN网络中的信号定义、节点信息、帧结构等数据。在C#中解析DBC文件,通常需要...

    C# XML解析方式

    根据给定文件中的标题、描述、标签以及部分内容,可以总结并深入探讨以下关于C#中XML解析的关键知识点: ### C#中的XML解析方式 #### 1. XML Text Reader(流式解析) - **简介**:在.NET框架中,`XMLTextReader`...

    C# 动态解析 javascript 脚本引擎源码

    Noesis.Javascript是一个用C#编写的高性能JavaScript引擎,它允许C#应用程序动态解析和执行JavaScript代码,从而实现了C#与JavaScript之间的互操作性。 在提供的文件列表中,我们看到了以下几个关键文件: 1. **...

    C# 表达式解析器源代码(修正)

    在本文中,我们将深入探讨C#中的表达式解析器,特别是在修正了算符优先级错误之后的实现。C#表达式解析器是一个程序,它能够分析输入的字符串表达式,并将其转换为计算机可以理解的形式,以便执行计算或逻辑操作。 ...

    类C#脚本解析

    C#是一种广泛应用的面向对象的编程语言,而"类C#脚本解析"则涉及到将C#语法结构转换为可执行代码的过程。在这个过程中,词法分析是第一步,它将源代码分解为一系列有意义的单元,即标记(tokens)。GOLD Parser是一...

    用C#来解析PDF文件

    与此相关的项目定义了用来读取和解析PDF文件的C#类. 为了测试这些类,附带的测试程序PdfFileAnalyzer让你可以去读取一个PDF文件,分析它并展示和保存结果. 程序将PDF文件分割成单独每页的描述,字体,图片和其它...

    JSVerify_C#JS脚本解析_

    总的来说,通过C#解析和执行JS脚本,我们可以实现跨语言的交互,使得C#应用能够充分利用JS的灵活性和动态性,同时也为代码分析、自动化测试等领域提供了便利。理解并掌握这一技术,对于提升C#开发者在Web环境下的...

    C#解析CAD文件

    总的来说,用C#解析CAD文件,尤其是DXF格式,是一项涉及文件读取、数据解析、图形渲染等多方面技术的任务。理解DXF文件的结构,结合WPF的强大图形功能,可以实现从CAD数据到用户界面的高效转换。同时,利用现有的库...

    C#表达式解析器-1.0

    《C#表达式解析器-1.0:深入解析与应用》 在编程领域,表达式解析器是一种至关重要的工具,它能够理解并处理由程序员编写的数学或逻辑表达式,将其转化为计算机可执行的形式。C#表达式解析器正是这样一种实现,尤其...

    2018C#解析DXF文件(CAD解析)

    2018最新的C#解析CAD的DXF格式文件,内容齐全,可读可写

    C# Pacp解析dll

    C# Pacp解析dll

    c# json 解析实践

    本实践主要关注如何在C#中解析JSON数据,特别是利用 Newtonsoft.Json 库进行操作。Newtonsoft.Json 是.NET平台上最受欢迎的JSON库之一,提供了丰富的功能来处理JSON。 首先,我们需要理解JSON的基本结构。JSON是一...

    c#实现解析apk、ipa包

    总结,使用C#解析APK和IPA文件涉及到文件压缩、XML解析、二进制文件处理等多个技术层面。虽然Java在这方面有更多现成的工具,但C#依然可以通过适当的方法实现这些功能,为开发者提供另一种可能性。通过理解APK和IPA...

    C#解析Json工具LitJson

    LitJson是C#编程语言中一个轻量级的Json解析库,主要用来处理Json格式的数据。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁和易于阅读及编写,同时也便于机器解析和生成,被广泛应用于...

    .net C# Cron表达式解析.

    然而,在C#中,我们也可以通过库来解析和使用Cron表达式,这使得.NET开发者也能利用Cron的强大功能。本篇文章将深入探讨C#中如何解析和使用Cron表达式。 Cron表达式是由7个子表达式组成的字符串,每个子表达式定义...

    c# 解析 can vector can dbc文件 .net

    在.NET环境中,使用C#语言解析DBC文件可以帮助开发者理解并操作CAN总线数据。 在C#中解析DBC文件,首先需要了解DBC文件的结构。DBC文件通常由以下几部分组成: 1. **头文件信息**:包含文件版本、创建日期、作者等...

    c#如何解析Json

    总结,C#解析JSON既有内置的`System.Text.Json`,也有流行的Json.NET库。两者都有各自的优点和适用场景。对于简单需求,内置库可能已足够;而对于更复杂的场景,Json.NET提供了更强大的功能。开发者应根据项目需求...

    C#对多级json解析

    在C#编程环境中,处理JSON数据是常见的任务,尤其是在需要解析多级嵌套结构时。本篇文章将深入探讨如何在C#中对多级JSON进行解析,并通过实际代码示例来阐述其原理。 首先,我们需要了解C#中用于解析JSON的库,最...

    免费C#解析DXF netdxf DXF类库

    用c#解析DXF的类库,亲测可行!用c#解析DXF的类库,亲测可行!用c#解析DXF的类库,亲测可行!用c#解析DXF的类库,亲测可行!用c#解析DXF的类库,亲测可行!用c#解析DXF的类库,亲测可行!用c#解析DXF的类库,亲测...

    C#解析html,HtmlAgilityPack

    总的来说,HtmlAgilityPack是C#开发中解析和操作HTML的强大工具,它的易用性和灵活性使得处理HTML文档变得简单。无论是在爬虫项目中提取数据,还是在网页自动化测试中修改页面元素,HAP都能发挥重要作用。通过学习和...

Global site tag (gtag.js) - Google Analytics