アプリ版:「スタンプのみでお礼する」機能のリリースについて

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が取り込める様に成っていました。

どなたか、お分かりに成る方が居られましたらお教え下さい。

A 回答 (1件)

DataGridViewが異なるだけで、同じ処理を行うなら


下記のように、処理対象のDataGridViewを表す変数を宣言して
その変数に対して処理を行えば、異なるDataGridViewのイベントを共通化出来ます。

Dim dgv As DataGridView = CType(sender, DataGridView)
    • good
    • 0
この回答へのお礼

ご回答有難うございました。

先ほどTextBoxを使って確認した所、動作しました。
明日、会社で実装してみたいと思います。

多分出来るとしたらsenderかeしか無いと思いその2っをネットで探していたのですが、CTypeなんですね。

ありがとうございました。

お礼日時:2014/04/16 19:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!