行確認ボタン・行追加ボタンクリック処理
FormJuchuEntryクラスに、選択明細行変更ボタンクリック処理と明細行変更完了ボタンクリック処理を実装します。
サンプルプログラム

【選択明細行変更ボタンクリック処理】
- CurrentRow.Indexプロパティで明細行インデックスを取得
- 元の行に戻すために Private変数updateMeisaiIndexに保存
- 明細行確認ボタンと明細行変更完了ボタンをクリック可能に設定
- 明細行追加ボタン、選択行削除ボタン、選択明細行変更ボタンをクリック不可に設定
選択明細行変更完了ボタンクリック処理
- バインディングソースから変更前明細行を削除し、変更行を明細行リストの元の位置に追加
- 受注合計金額を再計算
- 明細行入力エリアをクリア
- 商品コードにフォーカス
- ボタンのクリック可能・不可設定
ソースリストの枠内をクリックすると全選択できます。
'*******************************************************
' 選択明細行変更ボタンクリック処理
'*******************************************************
Private Sub BtnGyoHenko_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles BtnGyoHenko.Click
Try
' 選択明細行の取得
Dim gyo As ClsInsertDetailRow
gyo = meisaiList(DgvMeisai.CurrentRow.Index)
' 画面項目にセット
TxtShohinCode.Text = gyo.ShohinCode
NudSuryo.Value = gyo.JuchuSuryo
LblShohinMeisho.Text = gyo.ShohinMeisho
LblJuchuTanka.Text = CStr(gyo.JuchuTanka)
LblJuchuKingaku.Text = CStr(gyo.JuchuKingaku)
' 変更行のインデックス保存
updateMeisaiIndex = DgvMeisai.CurrentRow.Index
' 商品コードにフォーカス
TxtShohinCode.Focus()
' 明細行変更完了ボタン押下可能
BtnGyoHenkoKanryo.Enabled = True
' 明細行確認ボタン押下可能
BtnGyoKakunin.Enabled = True
' 明細行追加ボタン押下不可
BtnGyoTsuika.Enabled = False
' 選択明細行削除ボタン押下不可
BtnGyoSakujo.Enabled = False
' 選択明細行変更ボタン押下不可
BtnGyoHenko.Enabled = False
Catch ex As Exception
MessageBox.Show(ex.ToString, "例外発生")
End Try
End Sub
'*******************************************************
' 明細行変更完了ボタンクリック処理
'*******************************************************
Private Sub BtnGyoHenkouKanryo_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles BtnGyoHenkoKanryo.Click
Try
' バインディングソースから変更前明細行を削除
bindingSrc.RemoveAt(updateMeisaiIndex)
' 受注明細空行生成
Dim dr As DataRow
dr = ClsInsertDetailRow.CreateDataRow
' 入力データセット
dr("商品コード") = TxtShohinCode.Text
dr("受注数量") = NudSuryo.Value
' 変更行を明細行リストの元の位置に追加
Dim meisaiGyo As New ClsInsertDetailRow(dr)
bindingSrc.Insert(updateMeisaiIndex, meisaiGyo)
' 受注合計金額を計算
Dim sum As Integer = 0
For i As Integer = 0 To meisaiList.Count - 1
sum += meisaiList(i).JuchuKingaku
Next
LblGokeiKingaku.Text = sum.ToString("#,##0")
' 明細行クリア
TxtShohinCode.Text = Nothing
LblShohinMeisho.Text = Nothing
NudSuryo.Value = 1
LblJuchuTanka.Text = Nothing
LblJuchuKingaku.Text = Nothing
' 商品コードにフォーカス
TxtShohinCode.Focus()
' 明細行がある時のボタンの活性化
If meisaiList.Count> 0 Then
' 選択明細行削除ボタン押下可能
BtnGyoSakujo.Enabled = True
' 選択明細行変更ボタン押下可能
BtnGyoHenko.Enabled = True
End If
' 明細行変更完了ボタン押下不可
BtnGyoHenkoKanryo.Enabled = False
' 明細行確認ボタン押下可能
BtnGyoKakunin.Enabled = True
' 明細行追加ボタン押下可能
BtnGyoTsuika.Enabled = True
' 選択明細行削除ボタン押下可能
BtnGyoSakujo.Enabled = True
' 選択明細行変更ボタン押下可能
BtnGyoHenko.Enabled = True
' 変更行のインデックスクリア
updateMeisaiIndex = -1
Catch ex As ShohinCodeException
' 商品コードエラー処理
MessageBox.Show(ex.Message, "商品コードエラー")
' 商品コードにフォーカス
TxtShohinCode.Focus()
Catch ex As Exception
' その他例外が発生した時の処理
MessageBox.Show(ex.ToString, "例外発生")
End Try
End Sub