2012-01-15 60 views
0

我爲自定義服務器控件進行了自定義點擊事件。該控件是一個按鈕,裏面有一個鏈接按鈕和一個普通的按鈕。事件本質上爲鏈接和普通按鈕提供了一個常用的點擊事件,以便在單擊它們時觸發。無法在自定義事件中進行調試

這裏是我的代碼:

public delegate void ButtonClick(object sender, EventArgs e); 
public event ButtonClick Click; 

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

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

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

現在的頁面,在這裏我使用的控制上:

void sbuSave_Click(object sender, EventArgs e) 
{ 
    // Cannot debug here! Can't check if event is fired. 
} 

我不能我的事件裏面調試,因爲它不觸發?如果我在裏面做了一個Response.Write(),我得到了文字,所以我認爲它正在發射。由於應用程序的其他部分發生了什麼,我真的需要能夠在事件內部進行調試。這裏發生了什麼?我錯過了一些重要的東西?

+0

您的事件處理程序在哪裏指定?嘗試做一個System.Diagnostic.Debug.Break(),它的工作?在Page_Init中定義了 – Polity 2012-01-15 12:53:29

+0

。它確實有效,它只是不會在點擊功能內部進行調試......請參閱下面的帖子評論。 – Jon 2012-01-16 10:09:26

+0

這是因爲沒有可用的調試符號,所以真正的問題是,您的點擊方法是在aspx文件內還是在cs文件內? – Polity 2012-01-16 11:32:23

回答

0

請參閱Polity的評論,同時確保在您的web配置中啓用調試。 ;-)

0

ButtonClick事件unncessary這裏,如果這兩個控件只是調用相同的單擊事件它可能已被更容易做:

// hook up both click events of each control to same handler 
butButton.Click += DoSomethingOnClick; 
lbuButton.Click += DoSomethingOnClick; 

private void DoSomethingOnClick(object sender, EventArgs e) 
{ 
    ... 
} 

編輯

想我最初誤讀的問題!看起來你想要公開一個單獨的Click事件,不管在自定義控件上點擊哪個按鈕,都應該調用該事件(糾正我,如果我錯了?)。

如果是這樣的話,那麼當你不使用你的事件的任何自定義ARGS所以你應該能夠編寫你的ButtonClick代表是unncessary:

public event EventHandler Click = new delegate() { }; 

public void butButton_Click(object sender, EventArgs e) 
{ 
    Click(sender, e); 
} 

public void lbuButton_Click(object sender, EventArgs e) 
{ 
    Click(sender, e); 
} 

至於爲什麼它不點火,它的很難說沒有看到你的完整代碼。你可以發佈你正在使用的代碼來連接到自定義控件上的Click事件嗎?

+0

我認爲這是解僱詹姆斯,只是我無法在裏面調試!這令我感到沮喪。如果我在事件中添加一個System.Diagnostics.Debugger.Break(),它會被拾取,但它會轉到Click(sender,e);而不是在功能裏面! 順便說一下,自定義事件代表的意義何在? – Jon 2012-01-15 13:00:14

+0

@Jon - 爲一個事件分配一個空白委託是一些編譯器魔術,可以讓你在調用它之前不必檢查事件是否爲空。嗯看起來很奇怪,它不會突破,似乎更像是一個IDE問題,而不是編碼問題,如果你說它輸出響應。寫入 – James 2012-01-15 17:08:59

+0

肯定輸出Response.Write。什麼是IDE問題? – Jon 2012-01-16 10:10:42