2012-02-09 133 views
2

AfterOpenDocumentイベントは正常に動作しますが、2番目のイベントを追加するとコードをコンパイルできませんBeforeSaveDocumentC#EventHandler - デリゲートに一致しない

私は、受信エラーがある:

QWApp_BeforeSaveDocumentマッチがQuoteWerks.__Application_BeforeSaveDocumentEventHandler

を委任するための過負荷私はC#にかなり新しいですが、私はそれはいくつかの見落としでなければならないと思います。

QWApp.AfterOpenDocument += new __Application_AfterOpenDocumentEventHandler(QWApp_AfterOpenDocument); 
    QWApp.BeforeSaveDocument += new __Application_BeforeSaveDocumentEventHandler(QWApp_BeforeSaveDocument); 

    void QWApp_AfterOpenDocument() 
    { 
     string todayDate = DateTime.Now.ToString("MM/dd/yyyy"); 
     QWApp.DocFunctions.SetDocumentHeaderValue("DocDate", todayDate, false); 
     QWApp.DocFunctions.RefreshDisplay(); 
    } 

    public void QWApp_BeforeSaveDocument(int iSaveAction, bool bCancel) 
    { 
     string todayDate = DateTime.Now.ToString("MM/dd/yyyy"); 
     QWApp.DocFunctions.SetDocumentHeaderValue("DocDate", todayDate, false); 
     QWApp.DocFunctions.RefreshDisplay(); 
    } 
+1

これはどのバージョンのC#ですか? –

+1

デリゲートの署名について知らずに何が間違っているのかを知ることは難しいです。 '__Application_BeforeSaveDocumentEventHandler'はどのように見えますか? –

+1

Visual Studioを使用している場合、 '+ ='をタイプした後に 'Tab'を2回押すと、適切な署名を含むスタブメソッドが生成されます。 – Groo

答えて

0

つまり、ハンドラのパラメータがイベント(デリゲート)のパラメータと一致しません。
デリゲートコンストラクタのツールチップを確認して、どのパラメータが必要かを確認します。

2

コンパイラによると、__Application_BeforeSaveDocumentEventHandler代理人はQWApp_BeforeSaveDocumentとは異なる引数を持っています。

引数が両方とも同じであることを確認してください。

もし私が推測するなら、ref bool bCancelまたは(おそらく、out bool bCancel)がQWApp_BeforeSaveDocumentにあるはずです。繰り返しますが、__Application_BeforeSaveDocumentEventHandlerデリゲートをチェックし、関数に同じ引数を設定します。

+2

複数のイベントハンドラを簡単に連鎖させることができるので、 'ref bool'はIMHOの可能性が高くなります。 – Groo

+0

スーパーデュパー!私は{tab} {tab}を使って、+ =を入力した後に適切な署名を含むスタブメソッドを生成し、bool bCancel(ref bool bCancel)が欠落したアイテムの前に 'ref'を確認しました。誰かがrefが何を意味するのかを私に説明することはできますか? –

+0

["pass by reference"](http://msdn.microsoft.com/en-us/library/0f66670z(v = vs.71).aspx)を意味します。 – Krizz

0

私はそのライブラリについて何も知らないが、このpageに、BeforeSaveDocumentイベントの署名がBeforeSaveDocument (short, ref bool)

である私は短いにiSaveActionを変更および/またはブール・パラメータにREFパラメータを作成して見てみますそれがコンパイルされる場合。

+1

おそらく 'ref bool'です。 – Groo

+0

ああ、良い点。 –

+0

この問題は結構です。 refパラメータが意味することを私に説明できますか? –

関連する問題