Datagridview,禁用按钮/行

Sof*_*eek 6 datagridview button winforms delete-row

我在一个包含一些数据的表单上有一个datagridview.第1列包含用于删除行的按钮.我们如何根据某些条件禁用此按钮或整行,以便无法删除该行?

小智 8

您是否会考虑将按钮单元格禁用为常规空文本框?

Dim cell As DataGridViewButtonCell = dgv.row(x).cell(y)
cell = New DataGridViewTextBoxCell()
cell.value = String.Empty
cell.ReadOnly = True
Run Code Online (Sandbox Code Playgroud)

它失去了它的边界"Button"外观并与其余的单元格混合(假设您主要使用默认的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);
Run Code Online (Sandbox Code Playgroud)


Han*_*son 5

实际上 MSDN 上有一个HowTo就是这样做的。

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

您可以使按钮列不可见。

或者,如果您只想禁用删除某些行,您可以在每个DataGridViewRowsTag属性中输入 true 或 false,并且在按钮事件处理程序中只删除设置为 false 的行。您可以将其与仅更改单元格的前景色和背景色相结合,使其看起来被禁用,这种着色可能可以在事件CellFormatting处理程序或其他内容中完成,这样您就不必循环遍历并为其着色手。