Tôi có một số DataGridView
trong đó một trong các cột là DataGridViewComboBoxColumn
. Khi lưới được điền, cột đó trông khác nhau vì mũi tên thả xuống xuất hiện trên mỗi ô trong cột. Tôi muốn thay đổi điều này để mũi tên thả xuống bị ẩn và chỉ hiển thị khi hàng thực sự được đánh dấu hoặc khi ô combobox được chọn để chỉnh sửa. Hành vi tôi muốn giống như cách cửa sổ Thuộc tính trong Visual Studio xử lý các giá trị của nó.Làm cách nào để ẩn mũi tên thả xuống của một DataGridViewComboBoxColumn như cửa sổ Thuộc tính Visual Studio?
6
A
Trả lời
9
Trong DataGridViewComboBoxColumn
, có một thuộc tính được gọi là DisplayStyle
. Đặt nó vào Nothing
để ẩn DropDownButton
Thông tin thêm về các DataGridViewComboBoxDisplayStyle
liệt kê hiện có sẵn tại đây MSDN link
0
Đã cho tôi một thời gian để tìm thấy điều này, nhưng ở trên là câu trả lời trộn với một vài trang khác.
Đây là cách ẩn menu thả xuống khỏi lưới dựa trên giá trị trong một lưới khác. ValueToCheck phải nằm trong ô trước khi ô chứa danh sách thả xuống bạn muốn ẩn.
Private Sub dgv_CellPainting(ByVal sender As Object, ByVal e As
DataGridViewCellPaintingEventArgs) Handles dgv.CellPainting
'Pages Grid needs to be edited when rendering
If (e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0) Then
Dim valueToCheck = dgv.Rows(e.RowIndex).Cells(2).Value
If (valueToCheck <> "True") Then
Dim thisCol = DirectCast(dgv.Rows(e.RowIndex).Cells(e.ColumnIndex), DataGridViewComboBoxCell)
thisCol.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing
e.PaintBackground(e.ClipBounds, False)
e.Handled = True
End If
End If
End Sub
0
Nếu bạn đặt DataGridViewComboBoxColumn.DisplayStyleForCurrentCellOnly = True
, thì menu thả xuống chỉ xuất hiện khi ô là ô hiện tại.
Hoàn hảo! Chỉ cần những gì tôi đang tìm kiếm. – dawntrader
Trong trường hợp đó, bạn nên đánh dấu nó là câu trả lời được chấp nhận – Joe
Đặt 'DataGridViewComboBoxColumn.DisplayStyleForCurrentCellOnly = True' là một tùy chọn khác. – SSS