博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Datagridview控件用法的一些总结
阅读量:6273 次
发布时间:2019-06-22

本文共 4234 字,大约阅读时间需要 14 分钟。

一、引言

Datagridview控件在winform开发中还是比较常用,一般的数据库系统都会使用它,但是想要友好的展示数据,形成良好的用户界面,那么就要对c#库中默认的Datagridview设置进行更改,以达到友好界面的需求。

下面就介绍一下Datagridview常见的用法。

二、Datagridview设置

1、列设置

a)、列的宽度铺满这个控件

  设置如下:把AutoSizeColumnsMode=Fill;//可以在属性窗口中设置

b)、列名居中

代码如下:

this.dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; //设置表头的格式(居中显示)

c)、禁止编辑某列

代码如下: 

//禁止某一些列编辑 dataGridView1.ReadOnly = false; foreach (DataGridViewColumn c in dataGridView1.Columns) {     if (c.Index != 2)        c.ReadOnly = true; }

 

d)、禁止列点击排序

代码如下:

//不能被排序foreach (DataGridViewColumn c in dataGridView1.Columns){       c.SortMode = DataGridViewColumnSortMode.NotSortable; }

 

e)、设置列的字体

this.dataGridView1.RowsDefaultCellStyle.Font = new Font("宋体", 10);

 

f)、设置列宽

this.dataGridView1.Columns[1].Width = 80; this.dataGridView1.Columns[2].Width = 60;

 g)、设置列显示模式

需要将第一列的单元格的内容全部显示出来,代码如下:

this.dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells ;

h)、禁止最左边的空列头显示

this.dgvSymbol.RowHeadersVisible = false;

 

2、行设置

a)、设置字体

代码如下:

this.dataGridView1.ColumnHeadersDefaultCellStyle.Font = new Font("仿宋", 13,FontStyle.Bold );

 

b)、改变默认的选中的颜色

代码如下:

dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Black; dataGridView1.DefaultCellStyle.SelectionForeColor = Color.White;

 

c)、允许每个单元格多行显示

代码如下:

this.dataGridView1 .DefaultCellStyle.WrapMode = DataGridViewTriState.True;

 

d)、设置每个单元格居中

代码如下:

foreach (DataGridViewColumn item in this.dataGridView1.Columns){           item.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;//设置每个单元格的格式(居中) }

 

e)、清除选择的单元格

代码如下:

foreach (DataGridViewCell c in this.dataGridView1.SelectedCells){       c.Selected = false;}

 

3、在每行的左边为每行添加一个从1开始递增的序号

效果如下:

首先为Datagridview控件添加一个单元格绘制的事件RowPostPaint,然后在该事件下面添加一些绘制的代码就行了,代码如下:

private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)        {            SolidBrush b = new SolidBrush(this.dataGridView1.RowHeadersDefaultCellStyle.ForeColor);            e.Graphics.DrawString((e.RowIndex + 1).ToString(System.Globalization.CultureInfo.CurrentUICulture), this.dataGridView1.DefaultCellStyle.Font, b, e.RowBounds.Location.X + 20, e.RowBounds.Location.Y + 6);            e.Graphics.FillRectangle(Brushes.White , new Rectangle(new Point(e.RowBounds.Location.X + 2, e.RowBounds.Location.Y + 2), new Size(20, 20)));//隐藏每行前面的图标        }

 

4、如何为列添加其他类型的列(而不是DataGridViewTextBoxColumn)并且绑定相应的数据源

一般的将数据查询所获取的表格DataTable对象绑定到Datagridview表格,我们只写一句代码:this.dataGridView1.DataSource=dtQueryResult;这样做虽然方便,但是却不人性化,显示的结果都是显示在DataGridViewTextBoxColumn中,而且列的标题都是查询中数据库的字段,并不是我们想要的显示的字段,那么如何根据数据库查询的表格数据对Datagridview的列的类型及其显示进行名称进行定制呢?

假设从数据库中查询出来的数据列有(id,eventMark,timeBlock,typeName,isComplete(bit))四个字段。

显示的要求

  • 1、id不让显示
  • 2、eventMark显示名称为:时间、timeBlock显示名称为:时间段、typeName显示名称为:类型名称、isComplete显示名称为:状态
  • 2、typeName的类型为DataGridViewComboBoxColumn类型,并绑定数据源,isComplete列显示的类型为DataGridViewCheckBoxColumn类型。

 

根据设置代码如下:

第一步还是不变,依然是绑定数据源this.dataGridView1.DataSource=dtQueryResult。

this.dataGridView1.AutoGenerateColumns = false;             DataGridViewTextBoxColumn dtEvent = new DataGridViewTextBoxColumn();            dtEvent.DataPropertyName = "eventMark";            dtEvent.HeaderText = "事件";            dataGridView1.Columns.Add(dtEvent);            //添加timeBlock项            DataGridViewTextBoxColumn dtTime = new DataGridViewTextBoxColumn();            dtTime.DataPropertyName = "timeBlock";            dtTime.HeaderText = "时间段";            dataGridView1.Columns.Add(dtTime);            //添加typeName项            DataGridViewComboBoxColumn dtType = new DataGridViewComboBoxColumn();            dtType.DataPropertyName = "typeName";            dtType.HeaderText = "类型";            dtType.DataSource = TypeNames.GetTypeNames();//绑定combox显示的数据源            dataGridView1.Columns.Add(dtType);            //添加isComplete项            DataGridViewCheckBoxColumn dtCheck = new DataGridViewCheckBoxColumn();            dtCheck.DataPropertyName = "isComplete";            dtCheck.HeaderText = "状态";            dataGridView1.Columns.Add(dtCheck);

 

三、总结

Datagridview的用法远远不及上述说的那么一些,还有很多实用的功能值得我们的去探索,包括他的重绘、事件处理等等。还可以根据自己的项目的需求可以对Datagridview控件进行定制,可以实现各种你意想不到的显示效果。

尽等你去发掘··············

 

转载于:https://www.cnblogs.com/mingjiatang/p/4968049.html

你可能感兴趣的文章
使用Notepad++开发C#,一个复杂点的csscript脚本
查看>>
jQuery的Internal DSL
查看>>
PL/pgSQL函数带output参数例子
查看>>
【spring set注入 注入集合】 使用set注入的方式注入List集合和Map集合/将一个bean注入另一个Bean...
查看>>
Nginx多站点设置及负载均衡
查看>>
Spring中bean注入前后的一些操作:
查看>>
如何让oracle DB、监听和oem开机启动(dbstart)
查看>>
HDU 2639 Bone Collector II(01背包变形【第K大最优解】)
查看>>
MailMail正式发布!注册码免费发放活动开启!(已结束~~不要再回复咧~)
查看>>
一个分层架构设计的例子(2)
查看>>
时态数据库的应用介绍(2)--时态数据库之TimeDB
查看>>
BZOJ 1207: [HNOI2004]打鼹鼠【妥妥的n^2爆搜,dp】
查看>>
Linux kernel scriptes bin2c "\x"
查看>>
当智能交通遇上大数据 智能交通不再是梦
查看>>
iOS开发 - Content hugging priority & Content compression resistance priority
查看>>
centos6下mysql的主从复制的配置
查看>>
Object-C--->Swift之(七)嵌套函数与闭包
查看>>
css继承样式怎么控制?用选择器
查看>>
Http和Https三次握手那些事
查看>>
WCF 添加 RESTful 支持,适用于 IIS、Winform、cmd 宿主
查看>>