0

別のイベント ハンドラーから呼び出しています。

private void launchApplicationToolStripMenuItem_Click(object sender, EventArgs e) {
            listApplications_DoubleClick(listApplications, null); 
        }

        private void listApplications_DoubleClick(object sender, EventArgs e) {

「listApplications」は ListView です。

DoubleClick() イベントの送信者を ListView にキャストしたため、listApplications を渡す必要がありました。

では、2 番目の引数はどうでしょうか。上記のように null を渡すか、次のように "e" を渡す必要があります。

listApplications_DoubleClick(listApplications, e);

どちらの方法も、適切な状況下では問題なく/同じように機能します。例外があればそうなるかどうかはわかりませんが…

4

3 に答える 3

1

危険とは言えませんが、適切に処理しないと例外などの問題が発生する可能性があります。あなたの例では、1 つのイベントはクリック イベントであり、もう 1 つのイベントはダブル クリック イベントです。これは、両方の EventArgs オブジェクト e が実際には MouseEventArgs であることを意味します。2 番目のイベント ハンドラーが e の存在しないメンバーにアクセスすることを心配する必要はありません。

たとえば、ユーザーがボタンをクリックするたびに paint イベントを呼び出したいとします。その場合、クリック イベントはペイント イベントを呼び出します。問題は、ペイント イベントが PaintEventArgs を予期しているため、MouseEventArgs を渡すと例外が発生する可能性があることです。もちろん、両方のコードを制御できる場合は、PaintEventArgs 固有のメンバーへのアクセスがあるかどうかを自分で確認できます。そうでない場合は問題ありませんが、このシナリオでは引数を渡す意味がわかりません。

あまり混乱していないことを願っています。

于 2012-04-12T17:16:57.857 に答える