DataGridView 控件包括 DataGridViewButtonCell 类,该类用于显示具有类似按钮的用户界面 (UI) 的单元格。但 DataGridViewButtonCell 不提供禁用由单元格显示的按钮外观的方式。
下面的代码示例演示如何自定义 DataGridViewButtonCell 类来显示可以显示为禁用的按钮。本示例定义一个新的单元格类型 DataGridViewDisableButtonCell,它由 DataGridViewButtonCell 派生。此单元格类型提供一个新的 Enabled 属性,可以将该属性设置为 false 来在单元格中绘制禁用的按钮。本示例还定义一个新的列类型 DataGridViewDisableButtonColumn,它显示 DataGridViewDisableButtonCell 对象。为了演示此新单元格类型和列类型,父 DataGridView 中的每个 DataGridViewCheckBoxCell 的当前值确定同一行中 DataGridViewDisableButtonCell 的 Enabled 属性是 true 还是 false。
首先要在代码中加入下面两个继承类:
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);
}
}
}
datagridview的button控件要在代码里面加入:
如加入编辑按钮:
DataGridViewDisableButtonColumn btn_ProEdit = new DataGridViewDisableButtonColumn();
btn_ProEdit.HeaderText = l.ALanuageBinding("gv_Action");
btn_ProEdit.Text = l.ALanuageBinding("gv_Edit");
btn_ProEdit.Name = "btn_ProEdit";
btn_ProEdit.Width = 50;
btn_ProEdit.UseColumnTextForButtonValue = true;
this.datagridview1.Columns.Add(btn_ProEdit);
禁用:
DataGridViewDisableButtonCell buttonCell = (DataGridViewDisableButtonCell)dgv_Promotiom.Rows[i].Cells["btn_ProEdit"];
buttonCell.Enabled = false;
分享到:
相关推荐
"基于C#的WinForm中DataGridView控件操作汇总" 在C#的WinForm中,DataGridView控件是一种常见的控件,用于显示和编辑表格数据。下面将对DataGridView控件的操作进行汇总。 一、单元格内容的操作 在DataGridView...
C# .Net DataGridView控件使用大全(含有代码演示)
代码示例演示如何自定义 ... 为了演示此新单元格类型和列类型,父 DataGridView 中的每个 DataGridViewCheckBoxCell 的当前值确定同一行中 DataGridViewDisableButtonCell 的 Enabled 属性是 true 还是 false。
在C#编程中,`DataGridView`控件是一个非常常用的数据展示工具,它可以显示表格形式的数据并允许用户进行交互。在实际应用中,我们有时需要在`DataGridView`的每一行中添加一个`Button`列,以便用户可以执行特定操作...
本篇文章主要介绍了如何在C#应用程序中使用DataGridView控件与Microsoft Access数据库进行交互,实现数据显示及更新的功能。通过一个简单的示例程序,我们能够了解到如何加载Access数据库到DataGridView,并通过用户...
本文将详细介绍如何在 `DataGridView` 控件中实现删除行的功能,并通过具体的代码示例来解释其工作原理。 #### 一、DataGridView 删除行的基本方法 在大多数情况下,我们可以通过简单的 `Remove` 方法来删除 `...
在C#开发中,经常需要将DataGridView中的数据导出或打印。本知识点详细介绍了一个用于打印DataGridView数据的解决方案,该方案包含了一个打印设置窗体和一个专门负责打印逻辑的类。通过这种方式,可以有效地管理打印...
2、设置列单元格不同的控件形式(TextBox,Button,ComboBox,CheckBox,Image,Link) 3、单元格显示多个控件,及控件绑定行,列信息 4、编辑,删除行数据 5、复制表格和单元格数据 6、查询,定位表格数据 7、Datagridview...
C#控件大全是指C#语言中提供的所有控件的集合,包括窗体、按钮、文本框、列表框、组合框、checkbox、RadioButton、 label、ProgressBar、TextBox、RichTextBox、DataGridView、ListView、TreeView等。这些控件都是C#...
### C# 动态绑定 DataGridView 单元格控件 在使用 Windows Forms 开发应用程序时,经常需要将数据展示在 DataGridView 控件上,并且有时还需要为特定列提供更丰富的交互功能,例如使用 ComboBox 控件来作为单元格。...
在本文中,我们将深入探讨如何使用JavaScript、CSS、DIV和HTML Table来实现C#中DataGridView控件的功能,尤其是实现单元格的动态编辑。在.NET框架下,DataGridView是用于展示和编辑数据的强大控件,但在Web环境中,...
### C# Winform遍历控件(窗体、Panel的子控件...通过以上介绍,我们可以了解到如何在C# Winform开发中有效地遍历窗体和Panel中的控件。这不仅能够帮助我们更好地管理和操作控件,还能让我们的应用程序更加灵活和强大。
在C#中,使用DataGridView控件,可以轻松创建和编辑表格。通过DataSource属性绑定数据源,Columns属性定义列,Rows属性管理行,还可以自定义单元格样式和行为。 四、数据可视化控件 数据可视化控件如图表、曲线图,...
在 DataGridView 控件中,可以通过 CurrentCell 属性来取得当前单元格的内容。例如: ```csharp Console.WriteLine(DataGridView1.CurrentCell.Value); ``` 此外,还可以通过 CurrentCell 属性来取得当前单元格的列 ...
本主题将深入探讨如何异步刷新TextBox和DataGridView控件,以避免阻塞UI线程,提供更好的用户体验。 首先,我们来了解异步编程的基本概念。在C#中,异步编程主要基于.NET Framework 4.5引入的`async`和`await`...
在C# Windows应用程序开发中,`DataGridView`是一个常用的控件,用于显示数据表格。这个控件提供了丰富的功能,包括编辑、排序、分页等。在某些场景下,用户可能需要手动调整行的顺序,比如在任务管理器或日程表应用...
DataGridView 控件是 C# WinForms 开发中用于显示和编辑表格数据的关键组件,它在 Windows Forms 2.0 中替代了旧版的 DataGrid 控件。这个控件提供了更丰富的功能和更高的自定义程度,能够满足多种复杂的数据展示...
在C# WinForm开发中,dataGridView控件常用于展示数据表格,而textBox控件则用于接收和显示单行文本。本教程将详细讲解如何实现一个功能,即通过鼠标拖拽dataGridView中的数据到textBox中显示。这个功能对于数据的...
在C#编程中,创建一个用户界面(UI)时,我们常常希望窗口的大小调整能够影响到其中的控件布局,使控件随着窗口尺寸的变化而自动调整位置和大小。这个过程通常涉及到控件的自动布局和锚点设置。本文将深入探讨如何...
在C#编程中,`DataGridView`控件是一个用于显示数据表格的强大工具,它允许用户以交互方式查看和编辑数据。本篇文章将深入探讨如何实现`DataGridView`中的复制和粘贴功能,使其操作体验类似Excel。 ### 1. `...