私combobox
の最初の選択に基づいて、2番目に値を追加しようとしています(列も含まれています)。combobox
datagridview
textbox
これが私のコードです:
Private Sub DataGridView1_EditingControlShowing(sender As Object, e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
Try
'Sub Recurrence combobox is selected
If DataGridView1.CurrentCell.ColumnIndex = 4 Then
'Verify what is chosen in the Recurrence textbox
Dim rowIndex = DataGridView1.CurrentCell.RowIndex
Dim FirstComboboxValue = DataGridView1(3, rowIndex).Value
If Not IsNothing(FirstComboboxValue) Then
Dim cmb As ComboBox = TryCast(e.Control, ComboBox)
RemoveHandler cmb.SelectedIndexChanged, New EventHandler(AddressOf ComboBox_SelectedIndexChanged)
AddHandler cmb.SelectedIndexChanged, New EventHandler(AddressOf ComboBox_SelectedIndexChanged)
End If
End If
Catch ex As Exception
MsgBox(ex.ToString())
End Try
End Sub
私のハンドラーは、ComboBox_SelectedIndexChanged イベントに対してトリガーを起動します。
Private Sub ComboBox_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
If DataGridView1.CurrentCell.ColumnIndex = 4 Then
Dim comboBox As ComboBox = CType(sender, ComboBox)
Dim cbCell As DataGridViewComboBoxCell = DirectCast(DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells(4), DataGridViewComboBoxCell)
Dim rowIndex = DataGridView1.CurrentCell.RowIndex
Dim FirstComboboxValue = DataGridView1(3, rowIndex).Value
'Clear items so they don't keep adding on each other
cbCell.Items.Clear()
Select Case FirstComboboxValue
Case "Choice1"
cbCell.Items.Add("Item1")
cbCell.Items.Add("Item2")
Case "Choice2"
cbCell.Items.Add("Item3")
cbCell.Items.Add("Item4")
Case "Choice3"
cbCell.Items.Add("Item5")
Case "Choice4"
cbCell.Items.Add("Item6")
cbCell.Items.Add("Item7")
End Select
'Remove event handler to prevent memory leak
RemoveHandler comboBox.SelectedIndexChanged, AddressOf ComboBox_SelectedIndexChanged
End If
End Sub
何らかの理由で、ブレークポイントを使用してプログラムをステップ実行するcombobox
と、「アイテム」を開こうとした2回目にのみアイテムが追加されますcombobox
。
デバッグせずにプログラムを実行しようとすると、何も表示されません。私が間違っていることは何か分かりますか?