0

私は試した

var wordApp = new Microsoft.Office.Interop.Word.Application();
var doc = wordApp.Documents.Open(FileName);
wordApp.Visible = true;

   ((Microsoft.Office.Interop.Word.ApplicationEvents4_Event)wordApp.Quit) += new ApplicationEvents4_QuitEventHandler(delegate
                    {
                        MessageBox.Show("word closed!");
                    });

しかし、私は得ます:

Cannot convert method group 'Quit' to non-delegate type 'Microsoft.Office.Interop.Word.ApplicationEvents4_Event'. Did you intend to invoke the method?


Microsoft.Office.Interop.Word._Application.Quit(ref object, ref object, ref object)' 
and non-method 'Microsoft.Office.Interop.Word.ApplicationEvents4_Event.Quit'. Using method group.

警告のためキャストをしましたが、解決しませんでした。そして、私はこのエラーを解決する方法がわかりません。前もって感謝します。

4

1 に答える 1

1

キャスト式の括弧を間違えたので、Quitをキャストしたくありません。適切な構文は次のとおりです。

((Microsoft.Office.Interop.Word.ApplicationEvents4_Event)wordApp).Quit += ...

おそらく、usingディレクティブを使用することで問題を回避しやすくなり、式を詰め込む必要性が少なくなり、より読みやすいコードを記述できるようになります。

using Word = Microsoft.Office.Interop.Word;
...

    var wordApp = new Word.Application();
    var doc = wordApp.Documents.Open(FileName);
    wordApp.Visible = true;
    var events = (Word.ApplicationEvents4_Event)wordApp;
    events.Quit += delegate {
        MessageBox.Show("word closed!");
    };
于 2012-06-09T16:17:06.457 に答える