CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

用c#作控件事件

楼主yuechang(昌昌)2002-03-11 17:03:23 在 .NET技术 / C# 提问

我现在作了一个控件,急需公开内部事件,怎么作?大哥大姐快帮忙呀。 问题点数:30、回复次数:3Top

1 楼zhq2000(方舟)回复于 2002-03-11 23:35:32 得分 0

//   delegate   declaration  
  delegate   void   MyDelegate();  
   
  public   class   MyClass    
  {  
        public   void   InstanceMethod()    
        {  
              Console.WriteLine("A   message   from   the   instance   method.");    
        }  
   
        static   public   void   StaticMethod()    
        {  
              Console.WriteLine("A   message   from   the   static   method.");  
        }  
  }  
   
  public   class   MainClass    
  {  
        static   public   void   Main()    
        {  
              MyClass   p   =   new   MyClass();  
   
              //   Map   the   delegate   to   the   instance   method:  
              MyDelegate   d   =   new   MyDelegate(p.InstanceMethod);  
              d();  
   
              //   Map   to   the   static   method:  
              d   =   new   MyDelegate(MyClass.StaticMethod);  
              d();  
        }  
  }Top

2 楼yuechang(昌昌)回复于 2002-03-12 10:46:45 得分 0

谢了,不过它不能生成MouseClick,KeyDown之类了事件。帮帮忙再想想办法吧,谢了谢了!Top

3 楼zhq2000(方舟)回复于 2002-03-12 20:13:04 得分 30

如果你的控件不是从Control派生的,则:  
   
   
  public   class   YourControl   :   ......  
  {  
  public   event   EventHandler   MouseClick;  
  public   event   KeyEventHandler   KeyDown;  
   
    .....  
   
  protected   void   RaiseKeyDown()  
  {  
   
          foreach(EventHandler   ev   =   MouseClick.GetInvocationList()   )  
                  ev(this   ,   new   EventArgs()   );  
       
  }  
   
  protected   void   RaiseMouseClick()  
  {  
          KeyEventArgs   e   =   new   KeyEventArgs();  
          //   initialize   e   at   here  
          foreach(KeyEventHandler   ev   =   MouseClick.GetInvocationList()   )  
                  ev(this   ,   e   );  
  }  
   
    ....  
  }  
   
   
  class   Client  
  {  
   
              protected   YourControl   theControl;  
   
              public   Client()  
              {  
                            theControl   =   new   YourControl();  
                            theControl.MouseClick   +=   new   EventHandler(   this.YourControl_OnMouseClick()   );  
              }  
   
            ...........  
   
              private   void   YourControl_OnMouseClick(object   sender   ,   EventArgs   e)  
              {  
                      System.Windows.Forms.MessageBox.Show("You   clicked   me!");  
              }  
  }  
   
  如果是从System.Windows.Forms.Control派生则它已继承了Control的所有事件!Top

相关问题

  • c#中控件事件的问题
  • >>==============>>有谁知道c#中,控件事件的响应机制?>>=====================>>
  • visual c++中列表控件的事件问题,着急!!!!
  • 关于C#中,ListView控件事件响应的问题
  • C#中DataGrid控件如何接鼠标收双击事件
  • Asp.net中的用户控件之间的事件调用(C#)
  • C#编写ActiveX控件问题。IE中无法触发事件
  • c#中关于控件数组的事件响应问题
  • C++Bulider控件
  • 杂C#中如何在给自定义控件中触发控件原有的事件:(急)

关键词

  • 控件
  • yourcontrol
  • mouseclick
  • thecontrol
  • mydelegate
  • 事件
  • ev
  • myclass
  • eventhandler
  • protected

得分解答快速导航

  • 帖主:yuechang
  • zhq2000

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo