请把不确定变成确定~我想监视我的对象,如果是某个值,就叫另一

来源:未知 责任编辑:责任编辑 发表时间:2014-02-18 03:25 点击:

名称有点饶,不是很好理解,但我喜欢这种大白话,不喜欢书所翻译过来的话,呵呵!
今天要把一个不确定的问题解决,问题是:一个程序中,有一个属性,如果它为true时,我希望把另一些方法自动运行,这是可以通过订阅事件来实现的,对吗?经过我的测试确实是这样的,呵呵。
事件一个一直叫我们头痛的话题,一个能不用就不用的东西,我们程序员为什么那么怕“事件”呢?我来分析几个原因
1 对本身的概念不是很理解
2 对它的作用不是很清晰,可能书上说不到点上,个人认为
3 平时用的少,所以对它更加陌生
今天,我就和大家一起再学习一个C#的事件
一说事件,就不行不说委托,这两者到底是什么关系呢,在我看来,委托就是一个类,而事件就是这个类的一个实例,呵呵,这样大家就容易理解了吧
事件由事件数据源,事件所发生的类和事件订阅者们组成,“事件订阅者们”就是说,一个事件可以被多个订阅都订阅。
开始写代码了,代码最能说明问题:
事件源类:
/// <summary>
  /// 事件源
  /// </summary>
  internal class KeyEventArgs : EventArgs
  {
      private char keyChar;
      public KeyEventArgs(char keyChar)
          : base()
      {
          this.keyChar = keyChar;
      }

      public char KeyChar
      {
          get
          {
              return keyChar;
          }
      }
  }

一都是以EventArgs 结尾的,其中EventArgs 本身它是所有事件源类的基类,它不提供任何事件源信息,如果有个性化的事件信息,需要去派生它
接下来看,发生事件的类,我们的事件就在这里发生,在什么时候,什么情况下发生,都来自这里。
/// <summary>
    /// 事件发生的类
/// </summary>
    internal class KeyInputMonitor
    {
        // 创建一个委托,返回类型为avoid,两个参数
        public delegate void KeyDownEventHandler(object sender, KeyEventArgs e);
        // 将创建的委托和特定事件关联,在这里特定的事件为OnKeyDown
        public event KeyDownEventHandler OnKeyDown;

        public void Run()
        {
            bool finished = false;
            do
            {
                Console.WriteLine("Input a char");

相关新闻>>

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 浅析.NET下XML数据访问新机制
    • asp.net 面试+笔试题目第1/2页
    • C# 邮件地址是否合法的验证
    • asp.net 设置GridView的选中行的实现代码
    • C#高级编程:数据库连接[1]
    • 经典C++程序1
    • IIS 自动回收导致后台定时器失效的问题解决
    • ASP.NET&#160;GridView列表代码示例
    • Asp.net MVC源码分析--Action Filter的链式调用
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1