2012-01-15 11 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()を内部に書いたら、私はそれが発射していると推測するようにテキストを取得します。私は本当にアプリケーションの残りの部分で起こっているイベントのために私のイベントの中でデバッグすることができる必要があります。何が起きてる?私は何かが欠けていますか?

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

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

編集

は、私が最初に質問を読み違え考える:両方のコントロールはちょうどそれを行うことが容易されている可能性があり、同じクリックイベントを起動した場合

+0

イベントハンドラはどこに指定されていますか? System.Diagnostic.Debug.Break()を実行しようとすると、動作しますか? – Polity

+0

Page_Initで定義されています。それは動作し、ちょうどクリック機能の '内部'をデバッグしません...以下の記事のコメントを参照してください。 – Jon

+0

これは、利用可能なデバッグシンボルがないので、実際の問題は、aspxファイル内またはcsファイル内のあなたのクリックメソッドですか? – Polity

答えて

0

Polityのコメントを参照して、Web設定でデバッグが有効になっていることを確認してください。 ;-)

0

あなたButtonClickイベントは、ここにunncessaryです! 1つのボタンのイベントを公開したいのですが、カスタムコントロール上でどのボタンがクリックされたかに関係なく呼び出されるように見えます。

その場合はあなただけ書くことができるはずですので、あなたのイベントのためにカスタム引数を使用していないとして、あなたの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(送信者、e)に移動します。関数の中ではなく、行を追加する必要があります。 代わって、カスタムイベントのデリゲートのポイントは何ですか? – Jon

+0

@Jon - 空白のデリゲートをイベントに割り当てることはコンパイラの魔法です。イベントを呼び出す前にイベントがヌルかどうかを確認する必要がありません。うまくいけばIDEの問題に似ているように思えます。 – James

+0

を書きます。確実にResponse.Writeを出力します。 IDEの問題は何ですか? – Jon

関連する問題