zoukankan      html  css  js  c++  java
  • 初學C#窗口事件

        事件驱动(Event Driven)是C#窗口程序设计的核心,其重要性就相当于VC中的消息映射,不了解事件驱动就无法深入窗口程序设计的殿堂。在C#语言中,事件的处理主 要有两种方法:委托式的事件处理模式(Delegation Event Model)与对可重载方法(Event Method)的重载。

    1、委托式事件处理
           委托式事件处理模式,顾名思义,就是将特定的事件委托给负责事件处理的方法来进行。
           在.NET中,类有数据成员(Data Member)与函数成员(Function Member)。此外还有 “事件成员(Event Member)”,来进行事件驱动的处理。
           事件成员就是那些与该类的对象相关的事件。它定义了在一个对象中会有哪些相关的事件发生。不同的类可以有不同的事件成员。
           事件处理可通过委托关系来进行。委托关系可以这样来建立:
           object.Event+=new EventHandle(Method);
           其含义是:如果对象object发生了Event事件,就交由方法Method来处理。一个对象可以委托多个不同的处理,“+=”用来增加新的委托关系。 Method是真正进行事件处理的地方,格式为:
           public void Method(object sender,EventArgs e);
           EventArgs是.NET Framework中有关事件的基础类,所有发生的事件都被包装成EventArgs类或其子类的对象。当事件发生时,Method会收到这两个参数。一 旦建立了委托关系,系统自动在特定事件发生时,转而执行您所委托的事件处理方法。
    下面举一个简单的例子,运行时首先产生一个窗口,当点击窗口上的按钮时,程序结束。代码如下:

    using System;
    using System.Windows.Forms; 
    class Form1:Form
    {
         
    public static void Main()
         {
             Application.Run(
    new Form1());
         }  
         
    public Form1():base()
         {
             Text
    ="事件处理示例";
             Button button1
    =new Button();
             button1.Text
    ="点击";
             
    //将button1的Click事件委托给countClick方法
             button1.Click+=new EventHandler(this.countClick);
             
    //将button1加到窗口中。
             Controls.Add(button1);
         }
         
    public void countClick(object sender,EventArgs e)
         {
             Application.Exit();
         }
    }

    2、重载事件方法
           在C#中,针对不同类所相关的事件,除了定义有事件成员外,也定义了可重载的事件方法,可通过重载这些事件方法来设计你所希望的对应事件处理。这些可重载 的事件方法名称皆以“On”开头,且被声明为“virtual”,一个被声明成virtual的方法,就代表它可被重载,被声明成override的方法 也代表它可被重载,如果声明成abstract则必须被重载。例如按钮的Click事件,就有一个对应的可重载的OnClick事件方法。
           仍然以上面的例子来说,代码如下:

    using System;
    using System.Windows.Forms;
    class Button1:Button
    {
         
    public static void Main()
         {
             Form form1
    =new Form();
             form1.Text
    ="事件处理示例";
             Button1 button1
    =new Button1();
             button1.Text
    ="点击";
             form1.Controls.Add(button1);
             Application.Run(form1);
         }
         
    protected override void OnClick(EventArgs e)
         {
             Application.Exit();
         }
    }

                                                                        轉自:http://www.devedu.com/2005-11-7/12590/default.aspx
  • 相关阅读:
    数据结构-树与二叉树-思维导图
    The last packet successfully received from the server was 2,272 milliseconds ago. The last packet sent successfully to the server was 2,258 milliseconds ago.
    idea连接mysql报错Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property
    redis学习笔记
    AJAX校验注册用户名是否存在
    AJAX学习笔记
    JSON学习笔记
    JQuery基础知识学习笔记
    Filter、Listener学习笔记
    三层架构学习笔记
  • 原文地址:https://www.cnblogs.com/scottckt/p/803894.html
Copyright © 2011-2022 走看看