当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 我在pb中调用sql server2000中的存储过程sp_droplogin为什么总出错?我用的是pb8.0.1的pfc,用的接口是ole db。我用的环境是win2000server+sp2+ie6+dx8.01(另一台类似,只不过是win2000pro版的). pb8是装的没法再全了,并且安装过最近的补丁. 我遇到的问题有些怪.调用的这个存储过程sp_droplogin提示大概是无法......
 ·各位大侠快帮帮我(stringgrid)    »显示摘要«
    摘要: 问题:第一次输入若干条记录(stringgrid)且保存退出,当第二交输入时则会依次的把第一次输入的记录复盖。 代码部份:procedure tform5.speedbutton2click(sender: tobject); begin form4.stringgrid1.cells[1,i+1]:=edit1.text; form4.stringgrid1.cells[2,i+1]:=......


“事件”的用法

请举几个简单的例子讲讲事件怎莫用。

NO.1   作者: triout

事件就是当你对应用进行相关操作的时候,系统报告给控件当前发生事情。  
   
  对它的操纵,通常就是对事件进行编程,具体的编程方法你可以在控件的事件属性中双击相关的属性后,系统会自动绑定事件到方法,你只要在方法中输入自己处理的代码就一切都OK了。

NO.2   作者: aspcn

你是指普通的调用事件,还是真正的写“事件”

NO.3   作者: bigtree21cn

 
  以下程序沒有調試﹐但基本上是事件的典型用法﹔但有可能大家不喜歡  
  自己定義事件參數。伙建議養成這個習慣。  
  -----------------------------------------  
  //聲明事件代表  
  public   delegate   void   myEventHandler(object   sender,  
                                                                                      ChangeEventArgs   e);  
  //事件參數類型  
  public   class   ChangeEventArgs:System.EventArgs  
  {   ....   }  
  //宿主類  
  public   class   myProducer  
  {  
        public   event   myEventHandler   Changing;  
        ....  
        //一旦調用這個方法就印發事件﹐e可以=null  
        protected   void   OnChange(ChangeEventArgs   e)       {  
            ...  
            if(Changing!=null)  
                  Changing(this,e);       //印發事件的方法  
        }    
  }  
       
  //事件訂閱類  
  public   class   myConsumer{  
      myProducer   producer;  
      public   myConsumer(){  
            producer=new   myProducer();  
            producer.Changing+=new   myEventHandler(callbackProc);  
      }  
   
      void   callbackProc(object   sender,ChangeEventArgs   e)  
      {  
          Debug.Assert("my   call   back   is   running!")  
      }  
  }  
     
                     
 

NO.4   作者: Ninputer

event   关键字使您得以指定当代码中的某些“事件”发生时调用的委托。此委托可以有一个或多个关联的方法,当代码指示该事件已发生时将调用关联的方法。可使一个程序中的事件用于将   .NET   框架公共语言运行库作为目标的其他程序。  
   
  为了创建并使用   C#   事件,必须采取以下步骤:    
   
  创建或标识一个委托。如果正在定义自己的事件,还必须确保有与事件关键字一起使用的委托。如果已经预定义了事件,则事件的使用者只需要知道委托的名称。    
  创建一个类,包含:    
  从委托创建的事件。    
  验证用   event   关键字声明的委托实例是否存在的方法。否则,该逻辑必须放置在引发此事件的代码中。    
  调用此事件的方法。这些方法可以重写一些基类功能。    
  此类定义事件。    
   
  定义一个或多个将方法连接到事件的类。所有这些类都包括:    
  使用   +=   运算符和   -=   运算符将一个或多个方法与基类中的事件关联。    
  将与事件关联的方法的定义。    
  使用此事件:    
  创建包含事件声明的类对象。    
  使用定义的构造函数,创建包含事件定义的类对象。    
  有关事件的更多信息,请参阅:    
   
  10.7   事件    
  事件教程    
  事件和委托    
  示例  
  定义和使用事件的基本示例可在事件教程中找到。本主题中的以下示例也对事件进行了说明。  
   
  示例   1   在接口中声明事件并在类中实现它。    
  示例   2   使用哈希表存储事件实例。    
  示例   3   通过事件属性,实现具有同名事件的两个接口。    
   
  示例   1  
  该示例显示可以在接口中声明一个事件并在类中实现它。  
   
  //   event_keyword.cs  
  using   System;  
  public   delegate   void   MyDelegate();       //   delegate   declaration  
   
  public   interface   I    
  {  
        event   MyDelegate   MyEvent;  
        void   FireAway();  
  }  
   
  public   class   MyClass:   I    
  {  
        public   event   MyDelegate   MyEvent;  
   
        public   void   FireAway()    
        {  
              if   (MyEvent   !=   null)  
                    MyEvent();  
        }  
  }  
   
  public   class   MainClass    
  {  
        static   private   void   f()    
        {  
              Console.WriteLine("This   is   called   when   the   event   fires.");  
        }  
   
        static   public   void   Main   ()    
        {  
              I   i   =   new   MyClass();  
   
              i.MyEvent   +=   new   MyDelegate(f);  
              i.FireAway();  
        }  
  }  
  示例   2  
  accessor-declarations   的用途之一是公开大量的事件但不为每个事件分配字段,而是使用哈希表存储这些事件实例。这只有在有非常多的事件且预期大部分事件都不实现时才有用。  
   
  //   event_keyword2.cs  
  using   System;  
  using   System.Collections;  
   
  public   delegate   void   MyDelegate1(int   i);  
  public   delegate   void   MyDelegate2(string   s);  
  public   delegate   void   MyDelegate3(int   i,   object   o);  
  public   delegate   void   MyDelegate4();  
   
  public   class   PropertyEventsSample    
  {  
        private   Hashtable   eventTable   =   new   Hashtable();  
   
        public   event   MyDelegate1   Event1    
        {  
              add    
              {  
                    eventTable["Event1"]   =   (MyDelegate1)eventTable["Event1"]   +   value;  
              }  
              remove  
              {  
                    eventTable["Event1"]   =   (MyDelegate1)eventTable["Event1"]   -   value;    
              }  
        }  
   
        public   event   MyDelegate1   Event2    
        {  
              add    
              {  
                    eventTable["Event2"]   =   (MyDelegate1)eventTable["Event2"]   +   value;  
              }  
              remove  
              {  
                    eventTable["Event2"]   =   (MyDelegate1)eventTable["Event2"]   -   value;    
              }  
        }  
   
        public   event   MyDelegate2   Event3    
        {  
              add    
              {  
                    eventTable["Event3"]   =   (MyDelegate2)eventTable["Event3"]   +   value;  
              }  
              remove  
              {  
                    eventTable["Event3"]   =   (MyDelegate2)eventTable["Event3"]   -   value;    
              }  
        }  
   
        public   event   MyDelegate3   Event4    
        {  
              add    
              {  
                    eventTable["Event4"]   =   (MyDelegate3)eventTable["Event4"]   +   value;  
              }  
              remove  
              {  
                    eventTable["Event4"]   =   (MyDelegate3)eventTable["Event4"]   -   value;    
              }  
        }  
   
        public   event   MyDelegate3   Event5    
        {  
              add    
              {  
                    eventTable["Event5"]   =   (MyDelegate3)eventTable["Event5"]   +   value;  
              }  
              remove  
              {  
                    eventTable["Event5"]   =   (MyDelegate3)eventTable["Event5"]   -   value;    
              }  
        }  
   
        public   event   MyDelegate4   Event6    
        {  
              add    
              {  
                    eventTable["Event6"]   =   (MyDelegate4)eventTable["Event6"]   +   value;  
              }  
              remove  
              {  
                    eventTable["Event6"]   =   (MyDelegate4)eventTable["Event6"]   -   value;    
              }  
        }  
  }  
   
  public   class   MyClass    
  {  
        public   static   void   Main()    
        {  
        }  
  }  
  示例   3  
  事件属性的另一个用途涵盖了实现两个接口的情形,其中每个接口都有一个同名事件。在这种情况下,必须使用显式实现事件属性:  
   
  //   event_keyword3.cs  
  using   System;  
   
  public   delegate   void   MyDelegate1();  
   
  public   interface   I1    
  {  
        event   MyDelegate1   MyEvent;  
  }  
   
  public   delegate   int   MyDelegate2(string   s);  
   
  public   interface   I2    
  {  
        event   MyDelegate2   MyEvent;  
  }  
   
  public   class   ExplicitEventsSample:   I1,   I2    
  {  
        public   event   MyDelegate1   MyEvent;     //   normal   implementation   of   I1.MyEvent.  
   
        event   MyDelegate2   I2.MyEvent       //   explicit   implementation   of   I2.MyEvent  
        {  
              add  
              {  
                    MyEvent2Storage   +=   value;  
              }  
              remove  
              {  
                    MyEvent2Storage   -=   value;  
              }  
        }  
   
        private   MyDelegate2   MyEvent2Storage;     //   underlying   storage   for   I2.MyEvent.  
   
        private   void   FireEvents()    
        {  
              if   (MyEvent   !=   null)  
                    MyEvent();  
              if   (MyEvent2Storage   !=   null)  
                    MyEvent2Storage("hello");  
        }  
  }  
   
  public   class   MyClass    
  {  
        public   static   void   Main()    
        {  
        }  
  }  
 


    摘要: architectural neutral distribution format (andf)这个英文单词究竟指的是什么编译技术---是中间代码生成 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE