DataGridView 实现一列单元格 显示多操作方式
来源:互联网 发布:热血杨家将网络大电影 编辑:程序博客网 时间:2024/05/26 12:58
RT:
主要使用的方法:
在CellPainting绘制操作方式
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { if (e.ColumnIndex >= 0 && e.RowIndex >= 0) { if (this.dataGridView1.Columns[e.ColumnIndex].HeaderText == "Op") { Employee model = this.dataGridView1.Rows[e.RowIndex].DataBoundItem as Employee; if (model != null) { StringFormat sf = StringFormat.GenericDefault.Clone() as StringFormat; sf.FormatFlags = StringFormatFlags.DisplayFormatControl; sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; sf.Trimming = StringTrimming.EllipsisCharacter; e.PaintBackground(e.CellBounds, false); int md = model.Age % 3; string text = "删除"; if (model.Age % 3 == 1) { text = "修改"; } switch (md) { case 1: e.Graphics.DrawString(text, this.dataGridView1.Font, Brushes.Red, e.CellBounds, sf); break; case 2: string text2 = "删除"; if (model.Age % 3 == 2) { text2 = "修改"; } SizeF size = e.Graphics.MeasureString(text, this.dataGridView1.Font); SizeF size2 = e.Graphics.MeasureString(text2, this.dataGridView1.Font); float z = size.Width / (size.Width + size2.Width); float z2 = size2.Width / (size.Width + size2.Width); RectangleF rect1 = new RectangleF(e.CellBounds.Left, e.CellBounds.Top, e.CellBounds.Width * z, e.CellBounds.Height); RectangleF rect2 = new RectangleF(rect1.Right, e.CellBounds.Top, e.CellBounds.Width * z2, e.CellBounds.Height); e.Graphics.DrawString(text, this.dataGridView1.Font, Brushes.Red, rect1, sf); e.Graphics.DrawString(text2, this.dataGridView1.Font, Brushes.Red, rect2, sf); break; default: e.Graphics.DrawString(text, this.dataGridView1.Font, Brushes.Red, e.CellBounds, sf); break; } } e.Handled = true; } } }
在CellMouseClick 事件对动作进行处理。
private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { Point pt = e.Location; if (e.ColumnIndex >= 0 && e.RowIndex >= 0) { if (this.dataGridView1.Columns[e.ColumnIndex].HeaderText == "Op") { Employee model = this.dataGridView1.Rows[e.RowIndex].DataBoundItem as Employee; if (model != null) { int md = model.Age % 3; string text = "删除"; if (model.Age % 3 == 1) { text = "修改"; } switch (md) { case 1: break; case 2: string text2 = "删除"; if (model.Age % 3 == 2) { text2 = "修改"; } Graphics g = this.dataGridView1.CreateGraphics(); SizeF size = g.MeasureString(text, this.dataGridView1.Font); SizeF size2 = g.MeasureString(text2, this.dataGridView1.Font); float z = size.Width / (size.Width + size2.Width); float z2 = size2.Width / (size.Width + size2.Width); Rectangle rect = new Rectangle(0, 0, this.dataGridView1.Columns[e.ColumnIndex].Width, this.dataGridView1.Rows[e.RowIndex].Height); RectangleF rect1 = new RectangleF(rect.Left, rect.Top, rect.Width * z, rect.Height); RectangleF rect2 = new RectangleF(rect1.Right, rect.Top, rect.Width * z2, rect.Height); if (rect1.Contains(pt)) { MessageBox.Show("1111111"); } if (rect2.Contains(pt)) { MessageBox.Show("2222222"); } break; default: break; } } } } }
上图:
源码:http://download.csdn.net/detail/zanfeng/9453608
1 0
- DataGridView 实现一列单元格 显示多操作方式
- DataGridView单元格的控制操作
- [唐胡璐] - DataGridView单元格显示多行的设置方法
- winform DataGridView最佳多抬头显示方式
- Winform下DataGridView 一个单元格中实现多个超链接
- DataGridView 中单元格显示不一样颜色方法
- datagridview使用tooltip控件显示单元格内容
- DataGridView 某一列单元格内容居中显示
- datagridview 一个单元格显示文字和图片
- C# .NET 如何在DataGridView中最简洁的实现对单元格显示的处理
- winform datagridview控件 一列多个按钮
- 关于DataGridView 控件单元格数据操作
- dataGridView单元格下拉框实现联动
- DataGridView单元格合并(画边框实现)
- Enter实现Datagridview逐单元格编辑
- datagridview实现两级显示
- DataGridView 单元格编辑后焦点移动到该行的另外一列而不换行
- DataGridView 应用(二)显示行号,合并单元格
- AndoridGridView 自定义适配器 监听事件的使用,实现更换头像功能
- 堆排序
- 时序图知识
- Vrilog-SD卡数据写入
- Android学习笔记----ListView补充
- DataGridView 实现一列单元格 显示多操作方式
- 危险系数 割点
- static 和 const
- 使用maven创建web项目
- JAVA泛型详解
- 思考作业
- QT环境搭建
- Android 弱引用二级缓存实现
- USACO 3.2 fact4 (unc)