2017-01-15 8 views
0

VB.NetでDataGridViewコントロールを使用していて、列の1つがバインドされていないDataGridViewComboBoxColumnです。DataGridViewComboBoxColumnのコンボ値とDataGridのRowインデックスを取得します。

ユーザーは、コンボコントロールで4つのエントリのいずれかを選択できます。 コンボボックスのコンテンツ/選択が実際に何であるかを判断する必要があります。現在、私はこのコンテンツを取得することができません。

私は、このサイトで発生した他の質問の1つにアドバイスされているように、AddHandler combo.SelectionChangeCommitted()を使用しようとしましたが、このイベント(ByVal送信者As System.Object、ByVal e As System.EventArgs)このコンボコントロールがオンになっているDataGridの実際の行を取得することができます。

グリッドの行インデックスが、辞書オブジェクトの関連するエントリのキーであるため、これは重要です。

答えて

1
あなたが言ったことに基づいて

とあなたの質問のタイトル(コンボボックスはすべてを選択している):

Dim ComboValue As String 
    Dim ComboIndex As Integer 
    Dim MyDict As New Dictionary(Of String, Integer) 

    For i As Integer = 0 To My_DGV.SelectedCells.Count - 1 

     ComboIndex = My_DGV.SelectedCells.Item(i).RowIndex 
     ComboValue = My_DGV.Rows(ComboIndex).Cells("YourDatagridviewComboboxCell").Value 
     MyDict.Add(ComboValue, ComboIndex) 

    Next 
+0

おかげ - 便利です。 ...しかし、このイベントは、ユーザーが別のグリッド行に移動すると起動します...ユーザーはBOTをアクティブにする前にすべてのコンボ変更を行います。一度アクティブにすると、refresh()ルーチンが呼び出されると、各コンボの値を調べるためにグリッドの行を1つずつ処理できるようになります。 – user6167266

+0

@ user6167266、これは明確に言及していません。今私の編集を見て、あなたは最初にセルのコミットを行う必要があります。 – LuckyLuke82

+0

私が記述したルーチンでセルの値を取得できるようにする方法がわかりません...コードがDataGridのすべての行を繰り返し処理し、セルの値を取得していると述べました。 。 – user6167266

関連する問題