datagridview显示行号的2种方法:

方法一:
网上最常见的做法是用DataGridView的RowPostPaint事件在RowHeaderCell中绘制行号:
privatevoiddataGridView1_RowPostPaint(objectsender, DataGridViewRowPostPaintEventArgs e){try{e.Graphics.DrawString((e.RowIndex + 1).ToString(), e.InheritedRowStyle.Font, new SolidBrush(Color.CadetBlue), e.RowBounds.Location.X + 15, e.RowBounds.Location.Y + 5);}catch(Exception ex){MessageBox.Show("添加行号时发生错误,错误信息:"+ex.Message, "操作失败");}}
但是这种方法在大数据量的时候性能比较差,每次滚动数据都会触发RowPostPaint事件。
方法二:
我的做法是给每行的HeaderCell赋值。
在网上发现有人提到这种做法,但是因为最后的显示问题而选择了上面的方法。具体问题就是,在行号超过2位,如100、1000,在选中该行时,DataGridView的行指示符▶会把行号往右挤,导致现实不全,100的时候显示▶10。
其实还是RowsHeaderWidth的大小有问题,将该列的宽度放大,行号显示的也没问题!
不知道他们有没有试过,上面绘制行号的方法在大行号的情况下显示也会有问题。
既然知道问题所在就要找到相应的解决方法。
具体做法是将DataGridView的RowsHeaderWidthSizeMode属性设置为AutoSizeToAllHeaders或者AutoSizeToDisplayedHeaders,这样自动设置宽度就不会出现行指示符挤压行号的情况了。
对于每次DataGridView的行变化,我们都去更新行号,用RowsAdded和RowsRemoved事件。
代码如下:
RowsAdded & RowsRemoved
privatevoidDataGridView1_RowsAdded(objectsender, DataGridViewRowsAddedEventArgs e)
{
for(inti =0; 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 +1).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 +1).ToString();
}
}privatevoidDataGridView1_RowsRemoved(objectsender, DataGridViewRowsRemovedEventArgs e)
{
for(inti =0; 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 +1).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 +1).ToString();
}
}

datagridview 指定列,进行绑定,不绑定的列不显示:

1:Winform项目 中:private void Form_Load(object sender, EventArgs e){//禁止自动生成列this.datagridview1.AutoGenerateColumns = false;}
2:Web项目中:
设置datagridview 的AutoGenerateColumns 属性为False

C#dataGridView显示menuStrip

拖一个ContextMenuStrip,设置dataGridView的ContextMenuStrip属性绑定快捷菜单即可。

设置DataGridView只能选中一行:this.dataGridView.MultiSelect = false;

转载于:https://www.cnblogs.com/iack/p/3559726.html

Winform datagridview相关操作相关推荐

  1. c# datagridview 相关操作。

    string[] newRow = {"long","d","b"}; Gridview.Rows.Insert(Gridview.Rows ...

  2. C# winform DataGridView 常见属性

    C# winform DataGridView 常见属性 C# winform DataGridView 属性说明 ① 取得或者修改当前单元格的内容 ② 设定单元格只读 ③ 不显示最下面的新行 ④ 判 ...

  3. Datagridview 相关

    一,ComboBoxColumn列的相关操作(动态绑定数据,SelelectedChanged事件) 界面效果图 给combox绑定数据(可以放在Page_Load中) VB: 'repWiClien ...

  4. 基于C#的AE二次开发之图层右键菜单打开属性表及图层相关操作

    基于C#的AE二次开发之图层右键菜单打开属性表及图层相关操作 我的开发环境为ArcGIS Engine 10.2与Visual studio2010.主地图名称为axMapControl1,Toc目录 ...

  5. C# WinForm dataGridView 技巧小结

    C# WinForm dataGridView 技巧小结 1.不显示第一个空白列 RowHeaderVisible属性设置为false 2.点击cell选取整行 SelectinModel 属性Ful ...

  6. C# DataTable相关操作

    DataTable相关操作 用法一:动态创建一个DataTable ,并为其添加数据 public void CreateTable(){//创建表DataTable dt = new DataTab ...

  7. 2021年大数据HBase(五):HBase的相关操作JavaAPI方式

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase的相关操作-JavaAPI方式 一.需求说明 ...

  8. 2021年大数据HBase(四):HBase的相关操作-客户端命令式!【建议收藏】

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase的相关操作-客户端命令式 1.进入HBase ...

  9. 2021年大数据Spark(二十五):SparkSQL的RDD、DF、DS相关操作

      目录 RDD.DF.DS相关操作 SparkSQL初体验 SparkSession 应用入口 获取DataFrame/DataSet 使用样例类 指定类型+列名 自定义Schema ​​​​​​​ ...

最新文章

  1. SLAM全栈+三维重建全栈系统学习路线!
  2. 计算图像相似度——《Python也可以》之一(转)
  3. WebService SOAP、Restful和HTTP(post/get)请求区别
  4. 封装cookie设置和获取的简易方法
  5. 如何创建自己的composer包
  6. 使用zk可以实现Master选举,实现原理是什么?
  7. Xcode7.1模拟器卡顿问题以及解决方案
  8. C++ 练习题(二)计算机存储和数字系统介绍
  9. AngularJS transclude 理解及例子
  10. UE4 android开发
  11. selenium安装
  12. word文件做一半未响应_Word 2016 开个别文档总是未响应
  13. php 图片 变灰色,php实现给图片加灰色半透明效果的方法_PHP
  14. 计算机专业知识更新速度快,最近及计算机专业知识.doc
  15. 机械硬盘结构与固态硬盘
  16. 无人机飞控技术-市场现状及未来发展趋势
  17. 无惧黑暗强光,纯视觉导航也能全天候作业
  18. html下拉框设置默认值_html下拉框怎么设置默认值
  19. matlab滞环比较控制器,滞环比较跟踪控制技术
  20. STATIC和静态分析的必要性

热门文章

  1. 为Mac OS X添加用Firefox搜索服务
  2. [Silverlight]使用PagedCollectionView配合复选框实现动态筛选的解决方案
  3. HttpServletRequest中获取IP值
  4. 传统数据中心如何实现向云的平滑升级
  5. form表单元素设置只读
  6. 算法熟记-排序系列-堆排序
  7. SQLServer查询表结构
  8. redis服务器端和客户端启动
  9. modal vue 关闭_Vue弹出框的优雅实践
  10. 关于Python3.7和Python3.6中元组类型数据内存存储问题