行確認ボタン・行追加ボタンクリック処理
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