Winforms Datagridview,禁用按钮/行

Winforms Datagridview,禁用按钮/行,winforms,button,datagridview,delete-row,Winforms,Button,Datagridview,Delete Row,我在表单上有一个datagridview,其中包含一些数据。第一列包含用于删除行的按钮。我们怎样才能根据某些条件禁用此按钮或整行,从而无法删除该行?实际上MSDN上有一个操作人员正在执行此操作 编辑:添加了一些其他建议 可以使按钮列不可见 或者,如果只想禁用删除某些行,可以在每个DataGridViewRowsTag属性中输入true或false,并在按钮事件处理程序中仅删除设置为false的行。您可以将此功能与更改单元格的前景色和背景色结合起来,使其看起来不可用,这个着色可能在 CytoFri

我在表单上有一个datagridview,其中包含一些数据。第一列包含用于删除行的按钮。我们怎样才能根据某些条件禁用此按钮或整行,从而无法删除该行?

实际上MSDN上有一个操作人员正在执行此操作

编辑:添加了一些其他建议

可以使按钮列不可见


或者,如果只想禁用删除某些行,可以在每个
DataGridViewRow
s
Tag
属性中输入true或false,并在按钮事件处理程序中仅删除设置为false的行。您可以将此功能与更改单元格的前景色和背景色结合起来,使其看起来不可用,这个着色可能在 CytoFrimuts事件处理程序或某些东西中完成,这样您就不必通过手工循环并将其着色。

< P>您是否考虑将按钮单元关闭为常规空文本框禁用?

Dim cell As DataGridViewButtonCell = dgv.row(x).cell(y)
cell = New DataGridViewTextBoxCell()
cell.value = String.Empty
cell.ReadOnly = True
它失去了带边框的“按钮”外观,并与其余单元格混合(假设您主要使用默认的DataGridViewTextBoxCells)

这是C#中的等效值,加上它使字段变灰以使其看起来是只读的:

var cell = dgv[column, row] = new DataGridViewTextBoxCell();
cell.Value = ""; // ignored if this column is databound
cell.ReadOnly = true;
cell.Style.BackColor = Color.FromKnownColor(KnownColor.Control);

这是一个老帖子,但我想建议我做什么

If conditionToDisable Then
   Dim cell As New DataGridViewTextBoxCell   'Replace the ButtonCell for a TextCell'
   cell.Value = valueForCell                 'Set the value again'
   grid.Rows(r).Cells(c) = cell              'Override the cell'
End If

我希望这会有帮助。

我以前见过,但一定有更好的方法。@BhejaFry:嗯,很多代码都是为了让它看起来正确。如果你不在乎还有很多其他的方法,我会在我的答案中添加一些建议,因为它更容易阅读