- ベストアンサー
イベント内で別イベントを呼ぶ方法
早速質問させていただきます。 Form上にDataGridView(dgv)があります。 dgvのセルをマウスでダブルクリックした時に処理を入れております。 Private Sub dgv_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellDoubleClick If e.RowIndex = -1 Then Exit Sub End If '//処理 End Sub このdgv上でEnterキーを押した際に、ダブルクリックしたのと同じ処理を 行いたいのですが、このような場合、どのような実装をするのが一般的なのでしょうか? 例えば、下記の様にCall dgv_CellDoubleClick(sender, e)をするとEventArgsが合わないためエラーになってしまいます。 適切な方法をご教授お願い致します。 Private Sub dgv_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dgv.KeyDown If e.KeyCode = Keys.Enter Then Call dgv_CellDoubleClick(sender, e) End If End Sub
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
eの中で使用するものだけを引数とした関数を用意すればいいんじゃないでしょうか?(私ならそうします。^^;) Private Sub dgv_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellDoubleClick call 処理(e.rowIndex) End Sub Private Sub dgv_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dgv.KeyDown If e.KeyCode = Keys.Enter Then Dim rowIndex as integer = 選択行取得命令 Call 処理(rowIndex) End If End Sub な感じですかね。
その他の回答 (1)
- ham_kamo
- ベストアンサー率55% (659/1197)
別に共通のプロシージャを作り、たとえば Public Sub Common1() 処理 End Sub としておき(同じフォーム内のコードだとPrivateでもかまいませんが) Private Sub dgv_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellDoubleClick If e.RowIndex = -1 Then Exit Sub End If Call Common1 End Sub Private Sub dgv_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dgv.KeyDown If e.KeyCode = Keys.Enter Then Call Common1 End If End Sub としてはいかがでしょうか。
お礼
ham_kamoさん、ご回答ありがとうございます。 やはり普通に別プロシージャにしてやるべきなんですね。 ありがとうございました。
お礼
mjsamiasanさん、ご回答ありがとうございます。 やはり普通に別プロシージャにしてやって引数を与える方法で進めます。 ありがとうございました。