| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4361 人关注过本帖, 1 人收藏
标题:【交流探讨】说说你本人对“事件”的理解……
只看楼主 加入收藏
skyzoneskyzone
Rank: 1
等 级:新手上路
威 望:1
帖 子:137
专家分:0
注 册:2008-10-6
收藏(1)
 问题点数:0 回复次数:34 
【交流探讨】说说你本人对“事件”的理解……
一种好像是这样
protected override void WndProc(ref Message m)
{
}
另一种是:
 *** +=new eventhander();
没明白这个过程究竟是怎么样的。
以前学的别的编程语言都是要么只是针对本窗体内的控件的事件的控制,
对窗体外的事件的控制怎么控制,原理??(如果这个程序是在虚拟机里运行,在windows下的事件又会不会受到影响)

===========================================很喜欢本论坛里的引用,哈哈,拿来用用============================================================
08.10.16
从网上查的一些事件的基础概念(不懂,怕找的源代码会误导同志们,先上基础概念)。

C#的事件机制是基于委托实现的。实现一个事件,要先定义一个委托类型

  class1

  {

  public delegate void mydelegate (myEventArgs e);

  public event mydelegate event1;

  }

  然后我们可以使用+=和-=注册、移除事件

  class1.event1 += new mydelegate(new myEventArgs());
=========================================================================================
所有形如: void 函娄名(object 参数名,EventArgs 参数名);的函数都可以作为Control类的Click事件响应方法。
                   EventArgs是包含事件数据的类的基类,用于传递事件的细节,
                   参数object sender表示引发事件的对象,(其实这里传递的是对象的引用,如果是button1的click事件则sender就是button1)。

=========================================================================================
怎么把这个方法和事件联系起来呢,请看下面的代码。
this.button1.Click += new System.EventHandler(this.button1_Click); (其实button1.Click 为System.EventHandler委派的实例事件。与委派中委派实例委托给某一方法非常相似)
把this.button1_Click方法绑定到this.button1.Click事件。
=========================================================================================

wndproc的用法(自我感觉:像是提供了一个windowsprogram即windows程序的过滤功能,符合条件的进行处理,不符合的不进行处理)
using System;
using System.Windows.Forms;
namespace AtTongxilai
{
 /// <summary>
 /// 只能输入数字的文本框
 /// </summary>
 public class NumTextBox : TextBox
 {
  public NumTextBox()
        {
   //
   // TODO: 在此处添加构造函数逻辑
   //
        }

  protected override void WndProc(ref System.Windows.Forms.Message m)
       {
   int WM_CHAR = 0x0102;
   if(m.Msg == WM_CHAR)
      {
    if(((char)m.WParam >= '0') && ((char)m.WParam <= '9') ||
     (int)m.WParam == (int)Keys.Back || (int)m.WParam == (int)Keys.Delete)
        {
          base.WndProc (ref m);
        }
      }
   else
   {
       base.WndProc (ref m);
   }
   }
 }
}

使用+=和-=注册、移除事件,只注册不移除的话网页加载完成显示两次(有时候三次,不正常)移除后正常)
以下部分是自己做的源代码在测试。所以。。。。如果有可看度,最好能给加个精什么之类的

using System;
using System.Collections.Generic;
using
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;

namespace WindowsApplication12
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate("http://www.baidu.com");
            webBrowser1.DocumentCompleted+=new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
            webBrowser1.DocumentCompleted -=new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);//其实我刚发现,这两条命令根本就可以没有.但是也在发挥作用.
                    }
            
public void sst()
{
    MessageBox.Show("哈哈");
}
        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            MessageBox.Show("加载完成任务");
            
            sst();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            
        }
    }
}


[[it] 本帖最后由 skyzoneskyzone 于 2008-10-18 21:02 编辑 [/it]]
搜索更多相关主题的帖子: 事件 预处理 
2008-10-14 14:44
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
国际惯例,本帖置顶,受万人景仰。
大家积极讨论哈,新的探讨话题。

[[it] 本帖最后由 小仙 于 2008-10-14 15:11 编辑 [/it]]


仁者乐膳,智者乐睡。我都爱~
2008-10-14 15:06
skyzoneskyzone
Rank: 1
等 级:新手上路
威 望:1
帖 子:137
专家分:0
注 册:2008-10-6
收藏
得分:0 
期待高论。

读万卷书莫如行万里路,行路在问题答题之中。
2008-10-14 15:54
duanchangren
Rank: 1
等 级:新手上路
威 望:1
帖 子:252
专家分:0
注 册:2008-7-26
收藏
得分:0 
要理解么,死的拿来就用
2008-10-14 23:17
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
发帖的兄弟,最好帖上段代码还有描述,便于理解,我最近想搞个自定义事件和调用事件的专栏,如果在自己能力所及的范围内弄的出来的话。


仁者乐膳,智者乐睡。我都爱~
2008-10-15 19:55
Wadialin
Rank: 1
等 级:新手上路
帖 子:243
专家分:0
注 册:2006-9-20
收藏
得分:0 
这个问题值得讨论,但是人气怎么那么差???

冷静~~
2008-10-16 09:31
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
呵呵,大家不要害羞,尽情的发表,理是越辩的越明,哪怕一个人来一句话,也很值得参考啊。


仁者乐膳,智者乐睡。我都爱~
2008-10-16 14:03
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8902
专家分:2567
注 册:2004-3-25
收藏
得分:0 
为了激发大家的讨论热情,改了一下标题,原先的标题会让人误以为是求助帖

畅所欲言
2008-10-16 16:25
myemail1983
Rank: 2
来 自:南京
等 级:新手上路
威 望:3
帖 子:256
专家分:0
注 册:2008-7-27
收藏
得分:0 
我觉得大部分人水平停留在界面代码部分,没有考虑太多,多了也不懂。。。
期待与大家共同进步

寻找学习的动力,承接小型程序设计,呵呵,为了激励自己学习下。
虽然做不到无私,但会学着去帮助别人
2008-10-16 22:20
yanghe1117
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2008-10-10
收藏
得分:0 
刚学c#,看别人写的界面的代码,基本都是通过事件来完成相应功能或在事件中调用其他函数,感觉事件很重要
2008-10-17 21:00
快速回复:【交流探讨】说说你本人对“事件”的理解……
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018746 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved