如何在 DataGridView 中禁用或隐藏按钮
Posted
技术标签:
【中文标题】如何在 DataGridView 中禁用或隐藏按钮【英文标题】:How to Disable or Hide Button in DataGridView 【发布时间】:2017-07-14 19:37:45 【问题描述】:您好,我想隐藏或禁用第三列中的按钮,我打算在每次单击时添加行。麻烦的是,以前的按钮是活动的,可以添加行。如何将按钮仅放在最后一行?
这是我的工作代码:
Private Sub dgAppliances_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgAppliances.CellContentClick
If e.ColumnIndex <> 2 Then
Exit Sub
Else
If Me.dgAppliances.RowCount - 1 = 20 Then
MsgBox("Maximum of 20 appliances only.")
Else
Me.dgAppliances.Rows.Add()
End If
End If
End Sub
但是当我添加一些代码时:
Private Sub dgAppliances_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgAppliances.CellContentClick
If e.ColumnIndex <> 2 Then
Exit Sub
Else
If Me.dgAppliances.RowCount - 1 = 20 Then
MsgBox("Maximum of 20 appliances only.")
Else
Me.dgAppliances.Rows.Add()
Dim cell As DataGridViewButtonCell = dgAppliances.Rows(0).Cells(2)
cell.Value = String.Empty
cell = New DataGridViewColumn()
cell.ReadOnly = True
End If
End If
End Sub
这行 cell = New DataGridViewColumn() 有错误。
它说,“System.Windows.Forms.DataGridViewColumn”不能转换为“System.Windows.Forms.DataGridViewButtonCell”。
谁能帮我解决这个问题? TIA。
Here's the sample image.
【问题讨论】:
【参考方案1】:您正在尝试将DataGridViewColumn
分配给DataGridViewButtonCell
- 整个列 分配给单个单元格。
也许您的意图是:cell = New DataGridViewTextBoxCell()
?但即便如此,如果你想
仅将按钮放在最后一行
那么你就会遇到Adding Different DataGridView Cell Types to a Column的问题。您可以进行如下所示的转换:
Me.dataGridView1.ColumnCount = 3
Me.dataGridView1.AllowUserToAddRows = False
Me.dataGridView1.AllowUserToDeleteRows = False
Me.dataGridView1.RowCount = 1
Me.dataGridView1(2, 0) = New DataGridViewButtonCell()
Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dataGridView1.CellContentClick
If TypeOf Me.dataGridView1(e.ColumnIndex, e.RowIndex) Is DataGridViewButtonCell Then
If Me.dataGridView1.RowCount - 1 = 20 Then
MessageBox.Show("Maximum of 20 appliances only.")
Else
Me.dataGridView1.Rows.Add()
Me.dataGridView1(e.ColumnIndex, e.RowIndex) = New DataGridViewTextBoxCell()
Me.dataGridView1(e.ColumnIndex, e.RowIndex).[ReadOnly] = True
Me.dataGridView1(e.ColumnIndex, Me.dataGridView1.RowCount - 1) = New DataGridViewButtonCell()
End If
End If
End Sub
【讨论】:
哇。你是最好的!!十分感谢你的帮助。 :))) 它有效,我正在努力使前几行删除按钮。 :) 非常感谢,希望你也能帮助我。 :) 在这种情况下,您根本不需要转换单元格。从一开始就将列设为DataGridViewButtonColumn
。然后在您的CellContentClick
事件中,如果您单击了DataGridViewButtonCell
,请检查它是否是网格中的最后一行。如果是,请添加另一行。如果不是,请删除单击的行。您唯一需要做的就是将按钮文本从“添加”更改为“删除”。
我明白了,先生。再次感谢你。 :))以上是关于如何在 DataGridView 中禁用或隐藏按钮的主要内容,如果未能解决你的问题,请参考以下文章
如何:禁用 Windows 窗体 DataGridView 控件的按钮列中的按钮