• ベストアンサー

Datagridviewのコンボボックスの扱い

VB2010Expressを使用しています。 図のように第1コラムの内容によって第2コラムのアイテムを変更するにはどのようにすればいいのですか? ご教授お願いします。 例)『果物』なら『みかん・りんご・…』、『野菜』なら『大根・たまねぎ・…』のようにしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#259269
noname#259269
回答No.1

こんな感じで。 Private Sub DataGridView1_CellValueChanged(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged If e.ColumnIndex = 0 AndAlso e.RowIndex >= 0 Then Dim combo1 = DataGridView1.CurrentRow.Cells(0) Dim combo2 = DataGridView1.CurrentRow.Cells(1) Select Case combo1.Value Case "果物" combo2.Value = "みかん・りんご・…" Case "野菜" combo2.Value = "大根・たまねぎ・…" End Select End If End Sub

Alshark
質問者

お礼

返事が遅くなってすいません。 うまく動作しました。

その他の回答 (1)

回答No.2

こんにちは。 以下の方法で要件を満たせます。 Public Class Form1 'メンバ変数宣言 Private ReadOnly 種類() As String = {"果物", "野菜"} Private ReadOnly 果物() As String = {"みかん", "りんご"} Private ReadOnly 野菜() As String = {"大根", "たまねぎ"} '初期化処理 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'グリッド列にコンボボックス表示項目設定 Me.col種類.DataSource = 種類 End Sub 'コンボボックスの選択確定処理 Private Sub DataGridView1_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit) End Sub 'コンボボックスの選択検知処理 Private Sub DataGridView1_CellValueChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged '変数宣言 Dim DGVCmbCell As DataGridViewComboBoxCell If DataGridView1.CurrentCell IsNot Nothing AndAlso DataGridView1.Columns(DataGridView1.CurrentCell.ColumnIndex).HeaderText = "種類" Then 'セル初期化 DGVCmbCell = New DataGridViewComboBoxCell If DataGridView1.CurrentCell.Value = "果物" Then DGVCmbCell.DataSource = 果物 Else DGVCmbCell.DataSource = 野菜 End If DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells("物品") = DGVCmbCell End If End Sub End Class

Alshark
質問者

お礼

返事が遅くなってすいません。 うまく動作しました。 いろいろな方法があるんですね、独学ですがこれからも精進したいと思います。

関連するQ&A