Add a few two classes first
#region Disabling Datagridviewbuttoncolumn
public class Datagridviewdisablebuttoncolumn:datagridviewbuttoncolumn
{
Public Datagridviewdisablebuttoncolumn ()
{
This. CellTemplate = new DataGridViewDisableButtonCell ();
}
}
public class Datagridviewdisablebuttoncell:datagridviewbuttoncell
{
private bool Enabledvalue;
public bool Enabled
{
Get
{
return enabledvalue;
}
Set
{
Enabledvalue = value;
}
}
public override Object Clone ()
{
DataGridViewDisableButtonCell cell =
(DataGridViewDisableButtonCell) base. Clone ();
Cell. Enabled = this. Enabled;
return cell;
}
Public DataGridViewDisableButtonCell ()
{
This.enabledvalue = true;
}
protected override void Paint (graphics graphics,
Rectangle clipbounds, Rectangle cellbounds, int rowIndex,
DataGridViewElementStates Elementstate, Object value,
Object FormattedValue, String ErrorText,
DataGridViewCellStyle CellStyle,
DataGridViewAdvancedBorderStyle Advancedborderstyle,
Datagridviewpaintparts paintparts)
{
if (!this.enabledvalue)
{
if ((Paintparts & datagridviewpaintparts.background) = =
Datagridviewpaintparts.background)
{
SolidBrush Cellbackground =
New SolidBrush (Cellstyle.backcolor);
Graphics. FillRectangle (Cellbackground, cellbounds);
Cellbackground.dispose ();
}
If ((Paintparts & datagridviewpaintparts.border) = =
Datagridviewpaintparts.border)
{
Paintborder ( Graphics, ClipBounds, Cellbounds, CellStyle,
Advancedborderstyle);
}
Rectangle buttonarea = cellbounds;
Rectangle buttonadjustment =
this. Borderwidths (Advancedborderstyle);
Buttonarea.x + = Buttonadjustment.x;
Buttonarea.y + = Buttonadjustment.y;
Buttonarea.height-= buttonadjustment.height;
Buttonarea.width-= buttonadjustment.width;
Buttonrenderer.drawbutton (Graphics, Buttonarea,
System.Windows.Forms.VisualStyles.PushButtonState.Disabled);
if (this. FormattedValue is String)
{
Textrenderer.drawtext (Graphics,
(string) this. FormattedValue,
This. Datagridview.font,
Buttonarea, Systemcolors.graytext);
}
}
Else
{
Base. Paint (Graphics, clipbounds, Cellbounds, RowIndex,
Elementstate, value, FormattedValue, ErrorText,
CellStyle, Advancedborderstyle, paintparts);
}
}
}
#endregion
If DataGridView data is already bound, use the following methods
private void Disablebuttoncell (DataGridView dgv,string strkey)
{
for (int j = 0; J < DGV. RowCount; J + +)
{
if (DGV. ROWS[J]. Cells[strkey]. value.tostring () = = "Data value to disable")
{
if (DGV. ROWS[J]. Cells[strkey] is DataGridViewDisableButtonCell)
((DataGridViewDisableButtonCell) DGV. ROWS[J]. Cells[strkey]). Enabled = false; Disable
}
}
}
C # WinForm DataGridView datagridviewbuttoncolumn column disabled