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# .Net DataGridView控件使用大全(含有代码演示)
代码示例演示如何自定义 ... 为了演示此新单元格类型和列类型,父 DataGridView 中的每个 DataGridViewCheckBoxCell 的当前值确定同一行中 DataGridViewDisableButtonCell 的 Enabled 属性是 true 还是 false。
C#动态绑定datagridview单元格控件 具体方法如下: 1.实例化一个定义好的控件:如combobox 2.初始化combobox控件 3.获取
然后按钮点击事件中写入以下代码: private void printButton_Click(object sender, EventArgs e) { System.Data.DataTable dt = new System.Data.DataTable(); DataRow dr; //设置列表头 foreach ...
写的是一个界面设计,但是里面牵扯到控件随窗口的变化而变化,同时还有pnael容器里的控件
4、增加了直接打印Panel、GroupBox等容器控件中的内容的DrawPanel函数(对容器中的TextBox控件与Label控件以文本的形式打印,除此之外的其他除容器控件之外的控件如CheckBox、ComboBox、Button控件等则直接以图片的...
这是c#中使用winform的datagridview控件添加按钮的demo 1、做自定义控件DataGridViewDisableButtonColumn。比系统自带的控件DatagridviewButtonColumn多了enabled属性 2、添加到程序的datagridview上。 3、根据数据...
近期学习C#的winform,整理的常用控件用法,入门级 包括button,datagridview,list,listview,checkBox,TreeGridView,MdiForm
1 btn Button 2 chk CheckBox 3 ckl CheckedListBox 4 cmb ComboBox 5 dtp DateTimePicker 6 lbl Label 7 llb LinkLabel 8 lst ListBox 9 lvw ListView 10 mtx MaskedTextBox 11 cdr MonthCalendar 12 ...
一个可以替代DataGridView的好控件,支持button, checkbox,image等格式Cell,使用方便极了!
实例218 使Button控件大小自动适应文本长度 293 实例219 得到鼠标焦点后自动放大的Button按钮 294 实例220 动态创建多个Button控件 295 11.2 TextBox控件应用 296 实例221 制作多行文本框 296 实例222 制作密码...
C# winform 单击与双击事件同时存在例子 在wiform中单击与双击事件是不可以同时存在的。
(4)当选中DataGridView控件中的某一行记录时(DataGridView控件的Mouse_Click事件),“课程名字”、“学分”、“课程代码”文本框中分别显示该项对应的课程信息; (5)当选中某一行记录并单击【编辑】按钮时,...
dataGridView button tabcontrol 重绘
6 <br>0014 如何锁定窗体中的控件 6 <br>0015 统一窗体中控件的字体设置 7 <br>0016 通过“格式”菜单布局窗体 7 <br>0017 起始页中的“Visual Studio开发人员新闻” 7 <br>1.3 MSDN帮助的...
DataGridView控件模仿Excel复制选中的单元格内容。代码中利用DataGridView、button、contextMenustrip控件。