如何在winform DataGridView控件的DataGridViewButtonColumn按钮列中禁用按钮
2014-01-11 09:46
435 查看
原文:http://msdn.microsoft.com/en-us/library/ms171619(v=vs.85).ASPX
public class DataGridViewDisableButtonColumn : DataGridViewButtonColumn { public DataGridViewDisableButtonColumn() { this.CellTemplate = new DataGridViewDisableButtonCell(); } }
/// <summary> /// DataGridView的DataGridViewButtonCell没有可以禁用按钮的功能,这里自定义一个控件实现这个功能 /// </summary> public class DataGridViewDisableButtonCell : DataGridViewButtonCell { private bool enabledValue; /// <summary> /// 是否使能 /// </summary> public bool Enabled { get { return enabledValue; } set { enabledValue = value; } } // Override the Clone method so that the Enabled property is copied. public override object Clone() { DataGridViewDisableButtonCell cell = (DataGridViewDisableButtonCell)base.Clone(); cell.Enabled = this.Enabled; return cell; } // By default, enable the button 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) { // The button cell is disabled, so paint the border, // background, and disabled button for the cell. if (!this.enabledValue) { // Draw the cell background, if specified. if ((paintParts & DataGridViewPaintParts.Background) == DataGridViewPaintParts.Background) { SolidBrush cellBackground = new SolidBrush(cellStyle.BackColor); graphics.FillRectangle(cellBackground, cellBounds); cellBackground.Dispose(); } // Draw the cell borders, if specified. if ((paintParts & DataGridViewPaintParts.Border) == DataGridViewPaintParts.Border) { PaintBorder(graphics, clipBounds, cellBounds, cellStyle, advancedBorderStyle); } // Calculate the area in which to draw the button. Rectangle buttonArea = cellBounds; Rectangle buttonAdjustment = this.BorderWidths(advancedBorderStyle); buttonArea.X += buttonAdjustment.X; buttonArea.Y += buttonAdjustment.Y; buttonArea.Height -= buttonAdjustment.Height; buttonArea.Width -= buttonAdjustment.Width; // Draw the disabled button. ButtonRenderer.DrawButton(graphics, buttonArea, PushButtonState.Disabled); // Draw the disabled button text. if (this.FormattedValue is String) { TextRenderer.DrawText(graphics, (string)this.FormattedValue, this.DataGridView.Font, buttonArea, SystemColors.GrayText); } } else { // The button cell is enabled, so let the base class // handle the painting. base.Paint(graphics, clipBounds, cellBounds, rowIndex, elementState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts); } } }
相关文章推荐
- 如何:禁用 Windows 窗体 DataGridView 控件的按钮列中的按钮(摘录)
- 【分享】如何设计WinForm中DataGridView控件的自定义按钮列
- 如何设计WinForm中DataGridView控件的自定义按钮列
- 【分享】如何设计WinForm中DataGridView控件的自定义按钮列
- C# 如何:禁用 Windows 窗体 DataGridView 控件的按钮列中的按钮 Enable = false
- 如何:禁用 Windows 窗体 DataGridView 控件的按钮列中的按钮
- 如何:禁用 Windows 窗体 DataGridView 控件的按钮列中的按钮
- 在winform中datagridview在设计器中设置了编辑列,有一列是datagridviewcomboBoxColumn,如何给这列赋
- Ext.Button的禁用 extjs 获取一个panel 如何禁用bbar中的按钮 或者将它隐藏掉??
- 如何实现“WinForm窗体禁用关闭按钮”方法功能及源代码
- .net WinForm用户控件开发--(2)带按钮DataGridView
- C# 如何给Winform的button等控件添加快捷键
- C# 如何给Winform的button等控件添加快捷键
- 在 repeater控件中有button控件,如何点击button按钮在后头产生方法
- 【转】C# 如何给Winform的button等控件添加快捷键
- 给button等按钮和控件加背景色或者图片,dialog如何增加背景色和图片背景
- C# 如何给Winform的button等控件添加快捷键
- DataGridView特殊按钮(DisableButtonColumn)
- 给button等按钮和控件加背景色或者图片,dialog如何增加背景色和图片背景
- C# 如何给Winform的button等控件添加快捷键