Winform datagridview相关操作
datagridview显示行号的2种方法:
方法一:
网上最常见的做法是用DataGridView的RowPostPaint事件在RowHeaderCell中绘制行号:
privatevoiddataGridView1_RowPostPaint(objectsender, DataGridViewRowPostPaintEventArgs e)
{
try
{
e.Graphics.DrawString((e.RowIndex + ).ToString(), e.InheritedRowStyle.Font, new SolidBrush(Color.CadetBlue), e.RowBounds.Location.X + , e.RowBounds.Location.Y + );
}
catch(Exception ex)
{
MessageBox.Show("添加行号时发生错误,错误信息:"+ex.Message, "操作失败");
}
}
但是这种方法在大数据量的时候性能比较差,每次滚动数据都会触发RowPostPaint事件。
方法二:
我的做法是给每行的HeaderCell赋值。
在网上发现有人提到这种做法,但是因为最后的显示问题而选择了上面的方法。具体问题就是,在行号超过2位,如100、,在选中该行时,DataGridView的行指示符▶会把行号往右挤,导致现实不全,100的时候显示▶。
其实还是RowsHeaderWidth的大小有问题,将该列的宽度放大,行号显示的也没问题!
不知道他们有没有试过,上面绘制行号的方法在大行号的情况下显示也会有问题。
既然知道问题所在就要找到相应的解决方法。
具体做法是将DataGridView的RowsHeaderWidthSizeMode属性设置为AutoSizeToAllHeaders或者AutoSizeToDisplayedHeaders,这样自动设置宽度就不会出现行指示符挤压行号的情况了。
对于每次DataGridView的行变化,我们都去更新行号,用RowsAdded和RowsRemoved事件。
代码如下:
RowsAdded & RowsRemoved
privatevoidDataGridView1_RowsAdded(objectsender, DataGridViewRowsAddedEventArgs e)
{
for(inti =; i <e.RowCount; i++)
{
this.DataGridView1.Rows[e.RowIndex +i].HeaderCell.Style.Alignment =DataGridViewContentAlignment.MiddleRight;
this.DataGridView1.Rows[e.RowIndex +i].HeaderCell.Value =(e.RowIndex +i +).ToString();
}
for(inti =e.RowIndex +e.RowCount; i <this.DataGridView1.Rows.Count; i++)
{
this.DataGridView1.Rows[i].HeaderCell.Style.Alignment =DataGridViewContentAlignment.MiddleRight;
this.DataGridView1.Rows[i].HeaderCell.Value =(i +).ToString();
}
} privatevoidDataGridView1_RowsRemoved(objectsender, DataGridViewRowsRemovedEventArgs e)
{
for(inti =; i <e.RowCount; i++)
{
this.DataGridView1.Rows[e.RowIndex +i].HeaderCell.Style.Alignment =DataGridViewContentAlignment.MiddleRight;
this.DataGridView1.Rows[e.RowIndex +i].HeaderCell.Value =(e.RowIndex +i +).ToString();
}
for(inti =e.RowIndex +e.RowCount; i <this.DataGridView1.Rows.Count; i++)
{
this.DataGridView1.Rows[i].HeaderCell.Style.Alignment =DataGridViewContentAlignment.MiddleRight;
this.DataGridView1.Rows[i].HeaderCell.Value =(i +).ToString();
}
}
datagridview 指定列,进行绑定,不绑定的列不显示:
:Winform项目 中:
private void Form_Load(object sender, EventArgs e)
{
//禁止自动生成列
this.datagridview1.AutoGenerateColumns = false;
}
:Web项目中:
设置datagridview 的AutoGenerateColumns 属性为False
C#dataGridView显示menuStrip
拖一个ContextMenuStrip,设置dataGridView的ContextMenuStrip属性绑定快捷菜单即可。 设置DataGridView只能选中一行:
this.dataGridView.MultiSelect = false;
Winform datagridview相关操作的更多相关文章
- DataGridView 相关操作
一.单元格内容的操作// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index Consol ...
- c# datagridview 相关操作。
string[] newRow = {"long","d","b"}; Gridview.Rows.Insert(Gridview.Rows ...
- winform DataGridView控件判断滚动条是否滚动到当前已加载的数据行底部 z
http://www.zuowenjun.cn/post/2015/05/20/162.html 判断 DataGridView控件滚动条是否滚动到当前已加载的数据行底部,其实方法很简单,就是为Dat ...
- C# winform DataGridView 常见属性
C# winform DataGridView 属性说明① 取得或者修改当前单元格的内容 ② 设定单元格只读 ③ 不显示最下面的新行 ④ 判断新增行 ⑤ 行的用户删除操作的自定义 ⑥ 行.列的隐藏和删 ...
- 从零自学Hadoop(20):HBase数据模型相关操作上
阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
- 从零自学Hadoop(21):HBase数据模型相关操作下
阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
- 理解CSV文件以及ABAP中的相关操作
在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...
- Liunx下的有关于tomcat的相关操作 && Liunx 常用指令
先记录以下liunx下的有关于tomcat的相关操作 查看tomcat进程: ps-ef|grep java (回车) 停止tomcat进程: kill -9 PID (进程号如77447) (回车) ...
- pip的相关操作
>Python中的pip是什么?能够做些什么? pip是Python中的一个进行包管理的东西,能够下载包.安装包.卸载包......一些列操作 >怎么查看pip的相关信息 在控制台输入: ...
随机推荐
- Redis的安装与使用
一.什么 Redis REmote DIctionary Server,简称 Redis,是一个类似于Memcached的Key-Value存储系统.相比Memcached,它支持更丰富的数据结构,包 ...
- svn has stoped working
各种问各种搜 ,看来还得靠自己,,,,下面是解决方案; 如果你出现这种情况, 右键点击svn的选项,就弹出这个框框,,,,点击svn里的哪个选项都是弹出这个框框,,,,重新安装,重启,换各种版本安 ...
- app测试点
手机上的app分为基于HTML5的app(类似于pc上的b/S应用)和本地app(类似于C/S结构). 所以测试上我们也可以充分吸收web的b/s和c/s测试经验.但是不同于pc上的应用测试,手机上的 ...
- fiddlercore 抓包获取cookie的方法
public partial class form1 : Form { public form1() { string cookies = ""; InitializeCompon ...
- 收回动态VHD的未使用空间
随着虚拟机的运行,虚拟机磁盘所占空间越来越大,而实际使用并没有那么大,考虑回收未使用部分. 收回动态VHD的未使用空间(压缩VHD) 有一种方法是ghost,两个vhd文件对拷.本文不是那个方法 本文 ...
- Java实现SSO
摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出Web-SSO ...
- oracle 表空间常用语句
–查询表空间使用情况 SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", ...
- Java的基础概念
JDK (Java Development Kit) Java Developer Kit contains tools needed to develop the Java programs, an ...
- MarkDown中锚点的使用
在文档中创建锚点: <A NAME="ROP_ON_ARM">Davi L, Dmitrienko A, Sadeghi A R, et al. [Return-ori ...
- HDU 4764 Stone(博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4764 题目大意:Tang和Jiang玩石子游戏,给定n个石子,每次取[1,k]个石子,最先取完的人失败 ...