2009-12-04 73 views
0

我嘗試創建一個具有點擊evet的asp.net列表框。 要做到這一點,我創建了一個項目,創建一個dll文件,我將其添加到我的工作箱在Visual Studio 2008中。 它不起作用! 這裏是創建DLL文件中的代碼:使用單擊雙擊事件創建asp.net列表框

namespace list_box 
{ 
    public class list_box : ListBox, IButtonControl 
    { 
     private bool blCausesValidation = true; 
     private string strCommandArgument = ""; 
     private string strCommandName = ""; 
     private string strPostBackUrl = ""; 
     private string strText = ""; 
     private string strValidationGroup = ""; 

     protected override void OnInit(EventArgs e) 
     { 
      base.OnInit(e); 
      this.CssClass = "frmbtn"; 
     } 

     bool IButtonControl.CausesValidation 
     { 
      get 
      { 
       return blCausesValidation; 
      } 
      set 
      { 
       blCausesValidation = value; 
      } 
     } 

     string IButtonControl.CommandArgument 
     { 
      get 
      { 
       return strCommandArgument; 
      } 
      set 
      { 
       strCommandArgument = value; 
      } 
     } 

     string IButtonControl.CommandName 
     { 
      get 
      { 
       return strCommandName; 
      } 
      set 
      { 
       strCommandName = value; 
      } 
     } 

     string IButtonControl.PostBackUrl 
     { 
      get 
      { 
       return strPostBackUrl; 
      } 
      set 
      { 
       strPostBackUrl = value; 
      } 
     } 

     string IButtonControl.Text 
     { 
      get 
      { 
       return strText; 
      } 
      set 
      { 
       strText = value; 
      } 
     } 

     string IButtonControl.ValidationGroup 
     { 
      get 
      { 
       return strValidationGroup; 
      } 
      set 
      { 
       strValidationGroup = value; 
      } 
     } 


     public event EventHandler Click; 

     void click_i(object sender, EventArgs e) 
     { 
      OnClick(new EventArgs()); 
     } 

     protected virtual void OnClick(EventArgs e) 
     { 
      if (Click != null) 
      { 
       click_i(this, e); 
      } 
     } 

     public event CommandEventHandler Command; 

     void Command_i(object sender, CommandEventArgs e) 
     { 
      OnCommand(new CommandEventArgs(e)); 
     } 

     protected virtual void OnCommand(CommandEventArgs e) 
     { 
      if (Command != null) 
      { 
       Command_i(this, e); 
      } 
     } 
    } 
} 

幫我!!!! 我在asp.net所以新....

回答

0

兩件事情你應該知道關於你的代碼:

  1. 爲了這個工作,你必須從某個地方你的控制中調用的OnClick (每當你想讓你的事件發生時)。

  2. 您已在兩個事件中對循環引用進行編碼。

更改此:

protected virtual void OnClick(EventArgs e) 
{ 
    if (Click != null) 
    { 
     click_i(this, e); 
    } 
} 

這樣:

protected virtual void OnClick(EventArgs e) 
{ 
    if (Click != null) 
    { 
     click(this, e); 
    } 
} 

,並刪除此:

void click_i(object sender, EventArgs e) 

然後,所有你需要做的就是添加到您的控制(再次,無論你想讓事件發生在何處:

this.OnClick(new EventArgs());