0
DataGridViewComboBoxColumn
にvb.netを使用して文字列のリストを設定したいとします。 DataGridView
には、表示に非常に重要な他の列も含まれています。DataGridViewComboBoxColumnをバインドするには
DataGridViewComboBoxColumn
にvb.netを使用して文字列のリストを設定したいとします。 DataGridView
には、表示に非常に重要な他の列も含まれています。DataGridViewComboBoxColumnをバインドするには
おそらくこれはあなたの
''' <summary>
''' This example uses no backend data source.
'''
''' Two controls, DataGridView named DataGridView1
''' and one Label named Label1
'''
''' DataGridView has two columns created in the IDE
''' Column1 - DataGridViewComboBoxColumn
''' * DisplayStyle = DataGridViewComboBoxDisplayStyle.
''' Nothing set in the DataGridView Columns editor
''' Column2 - DataGridViewTextBoxColumn, nothing changed in settings
'''
''' </summary>
''' <remarks></remarks>
Public Class Form2
Private Sub Form2_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
CType(DataGridView1.Columns("Column1"), DataGridViewComboBoxColumn).DataSource = _
New String() {"Add", "Subtract", "Divide", "Multiply", "Total"}
DataGridView1.Rows.Add(New Object() {"Divide", "B1"})
DataGridView1.Rows.Add(New Object() {"Add", "B2"})
DataGridView1.Rows.Add(New Object() {"Subtract", "B3"})
DataGridView1.Rows.Add(New Object() {"Add", "B4"})
DataGridView1.Rows.Add(New Object() {"Multiply", "B5"})
End Sub
''' <summary>
''' If the event is triggered by the DataGridViewComboBoxColumn cast
''' e.Control to a ComboBox and setup SelectionChangedCommitted event
''' so that when the current cell value changes we can get it.
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub DataGridView1_EditingControlShowing(_
ByVal sender As Object, _
ByVal e As DataGridViewEditingControlShowingEventArgs) _
Handles DataGridView1.EditingControlShowing
If DataGridView1.Columns(DataGridView1.CurrentCell.ColumnIndex).Name = "Column1" Then
Dim cb As ComboBox = TryCast(e.Control, ComboBox)
RemoveHandler cb.SelectionChangeCommitted, AddressOf _SelectionChangeCommitted
AddHandler cb.SelectionChangeCommitted, AddressOf _SelectionChangeCommitted
End If
End Sub
Private Sub _SelectionChangeCommitted(sender As Object, e As EventArgs)
Label1.Text = CType(sender, DataGridViewComboBoxEditingControl).Text
End Sub
Private Sub DataGridView1_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)
If DataGridView1.Columns(e.ColumnIndex).Name = "Column1" Then
If IsComboBoxCell(DataGridView1(e.ColumnIndex, e.RowIndex)) Then
SendKeys.Send("{F4}")
End If
End If
End Sub
Private Sub Form2_Shown(sender As Object, e As EventArgs) Handles Me.Shown
AddHandler DataGridView1.CellEnter, AddressOf DataGridView1_CellEnter
End Sub
Public Function IsComboBoxCell(ByVal sender As DataGridViewCell) As Boolean
If sender.EditType IsNot Nothing Then
Return (sender.EditType Is GetType(DataGridViewComboBoxEditingControl))
Else
Return False
End If
End Function
End Class
を助けるかもしれません