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
  • 相关阅读:
    NTP on FreeBSD 12.1
    Set proxy server on FreeBSD 12.1
    win32 disk imager使用后u盘容量恢复
    How to install Google Chrome Browser on Kali Linux
    Set NTP Service and timezone on Kali Linux
    Set static IP address and DNS on FreeBSD
    github博客标题显示不了可能是标题包含 特殊符号比如 : (冒号)
    server certificate verification failed. CAfile: none CRLfile: none
    删除文件和目录(彻底的)
    如何在Curl中使用Socks5代理
  • 原文地址:https://www.cnblogs.com/scottckt/p/803894.html
Copyright © 2011-2022 走看看