为Canlendar控件添加事件,在网上找到一个VB代码的(http://itgroup.blueshop.com.tw/jeff377/blog?n=convew&i=2045),由于不会VB,请高手移植一下。代码如下:
       /// <summary>      
        /// 日期儲存格引發的命令事件。      
        /// </summary>      
         < _      
         System.ComponentModel.Category(WebCommon.Category.Action), _      
         System.ComponentModel.Description("日期儲存格引發的命令事件。") _      
         > _      
         Public Event DayCommand(ByVal sender As Object, ByVal e As DayCommandEventArgs)      
      
         /// <summary>      
         /// 引發 DayCommand 事件。      
         /// </summary>      
         Protected Overridable Sub OnDayCommand(ByVal e As DayCommandEventArgs)      
             RaiseEvent DayCommand(Me, e)      
         End Sub    
  
      
        /// <summary>      
        /// 引發 PostBack 產生的控制項事件。      
        /// </summary>      
         Protected Overrides Sub RaisePostBackEvent(ByVal eventArgument As String)      
             Dim oArgument() As String     
             Dim oEventArgs As DayCommandEventArgs      
      
             If String.Compare(eventArgument, 0, "DayCommand", 0, "DayCommand".Length, StringComparison.Ordinal) = 0 Then     
      
                 oArgument = Split(eventArgument, "$")      
                 If oArgument.Length <> 3 Then Exit Sub     
                 oEventArgs = New DayCommandEventArgs()      
                 oEventArgs.CommandName = oArgument(1)      
                 oEventArgs.Date = Date.Parse(oArgument(2))      
                 OnDayCommand(oEventArgs)      
                 Exit Sub     
             End If     
      
             MyBase.RaisePostBackEvent(eventArgument)      
         End Sub     
      
         /// <summary>      
         /// 取得引發 DayCommand 事件的用戶端指令碼。      
         /// </summary>      
         /// <param name="CommandName">命令名稱。</param>      
        /// <param name="Date">日期。</param>      
         Public Function GetDayCommandEventReference(ByVal CommandName As String, ByVal [Date] As Date) As String     
             Dim sArgument As String     
      
            sArgument = String.Format("DayCommand${0}${1}", CommandName, [Date].ToShortDateString)      
             Return Me.Page.ClientScript.GetPostBackEventReference(Me, sArgument)      
         End Function     

解决方案 »

  1.   

    一样的。参见MSDN。
    定义一个事件委托。
    有可能需要定义一个参数类,从EventArgs继承。
    定义一个事件。定义一个事件成员。
    最好定义一个RaiseXXXXEvent的方法。
    然后在需要触发的地方调用事件委托,或者调用RaiseXXXXEvent。
      

  2.   


    /// <summary>
    /// 日期儲存格引發的命令事件。
    /// </summary>
    [
    System.ComponentModel.Category("Action"),
    System.ComponentModel.Description("日期儲存格引發的命令事件。")
    ]
    public event EventHandler<DayCommandEventArgs> DayCommand;/// <summary>
    /// 引發 DayCommand 事件。
    /// </summary>
    protected virtual void OnDayCommand(DayCommandEventArgs e)
    {
    if (DayCommand != null)
    DayCommand(this, e);
    }/// <summary>
    /// 引發 PostBack 產生的控制項事件。
    /// </summary>
    protected override void RaisePostBackEvent(string eventArgument)
    {
    string[] oArgument;
    DayCommandEventArgs oEventArgs; if (string.Compare(eventArgument, 0, "DayCommand", 0, "DayCommand".Length, StringComparison.Ordinal) == 0)
    {
    oArgument = eventArgument.Split('$');
    if (oArgument.Length != 3) return;
    oEventArgs = new DayCommandEventArgs();
    oEventArgs.CommandName = oArgument[1];
    oEventArgs.Date = DateTime.Parse(oArgument[2]);
    OnDayCommand(oEventArgs);
    return;
    } base.RaisePostBackEvent(eventArgument);
    }/// <summary>
    /// 取得引發 DayCommand 事件的用戶端指令碼。
    /// </summary>
    /// <param name="CommandName">命令名稱。</param>
    /// <param name="Date">日期。</param>
    public string GetDayCommandEventReference(String commandName, DateTime date)
    {
    string sArgument; sArgument = String.Format("DayCommand${0}${1}", commandName, date.ToShortDateString());
    return this.Page.ClientScript.GetPostBackEventReference(this, sArgument);
    }