※ ChatGPTを利用し、要約された質問です(原文:VB.net2010 割り込みの共通化)
VB.net 2010で割り込み処理を共通化する方法
2014/04/15 22:03
このQ&Aのポイント
VB.net 2010でプログラムを作成しています。同じコントロールを使う場合の処理を共通化したいです。
現在は各データーグリッドビュー毎に処理していますが、一つの割り込み先にまとめたいです。
データーグリッドビューの違いを番号等で伝えてもらう方法も考慮しています。
VB.net 2010でプログラムを作成して居ます。
やりたい内容が同じで、同じコントロールを幾つか使う時、処理は共通にする事があると思います。
Case 1
sub_Std_Vlt_Dsp(0, frmMain.dgv_Std_100) '100Vの規格編集表示
Case 2
sub_Std_Vlt_Dsp(1, frmMain.dgv_Std_120) '120Vの規格編集表示
Case 3
sub_Std_Vlt_Dsp(2, frmMain.dgv_Std_200) '200Vの規格編集表示
この場合、sub_Std_Vlt_Dsp()は
Sub sub_Std_Vlt_Dsp(ByVal iVolt As Integer, ByVal dgvList As System.Windows.Forms.DataGridView)
'規格テーブルの編集/Edit of standars.
'入力/Input
'iVolt as Integer 電圧ID/Voltage ID
'dgvList as DataGridView 表/List
dgvList.Rows.Clear() '表示内容の初期化
'セルの設定 Setting of each cell
dgvList.Columns(0).Width = 30
dgvList.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dgvList.Columns(0).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
この様に記述する事により、各々のデーターグリッドビューをdgvListとして処理出来ます。
そこで、割り込みの時なのですが、やはり複数のデーターグリッドビューのCellEndEditでの処理が同じなので、上記例の様に処理する事は可能でしょうか。
現在は各データーグリッドビュー毎に以下の様なコーディングをして居ます。
Private Sub dgv_Std_200_CellEndEdit(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv_Std_200.CellEndEdit
'電圧毎の規格編集処理
'0:規格命令 1:結果命令 2:倍率 3:符号(1:マイナス可) 4:表示(1:非表示)
'5:単位 6:項目 7:最大値 8:最小値
bUpdItm = True '編集ありフラグTrue設定
btnStdUpdate.Enabled = True '更新ボタン利用可
btnStdCancel.Enabled = True '取り消しボタン利用可
Select Case e.ColumnIndex 'コラム別処理/Process by each column
Case 0 '列0/Column 0 規格コマンド
bStatus = fncChkHex(dgv_Std_200(0, e.RowIndex).Value, 0, 2) 'コマンド 空白か2桁のヘキサ文字
Case 1 '列1/Column 1 結果コマンド/Result command
bStatus = fncChkHex(dgv_Std_200(1, e.RowIndex).Value, 0, 2) 'コマンド 空白か2桁のヘキサ文字
処理内容が各データーグリッドビュー同じなので一つの割り込み先にまとめたいと思っています。
上記の dgv_Std_200() を何らかの方法で他のデーターグリッドビューの時でも使える様にしたいのです。
なお、Handles の所に他のデーターグリッドビューのCellEndEditの飛び先を追加すれば、この割り込み処理に飛べる事は分つています。
直接先の例の様にコントロールの継承で無くても、例えばデーターグリッドビューの違いを番号等で伝えてもらつても構いません。
以前使って居たC++Builderは割り込み元のIDが取り込める様に成っていました。
どなたか、お分かりに成る方が居られましたらお教え下さい。
質問の原文を閉じる
質問の原文を表示する
お礼
ご回答有難うございました。 先ほどTextBoxを使って確認した所、動作しました。 明日、会社で実装してみたいと思います。 多分出来るとしたらsenderかeしか無いと思いその2っをネットで探していたのですが、CTypeなんですね。 ありがとうございました。