zoukankan      html  css  js  c++  java
  • 关于Datagridview控件用法的一些总结

    一、引言

    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控件进行定制,可以实现各种你意想不到的显示效果。

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

  • 相关阅读:
    转:一个实例明白AutoResetEvent和 ManulResetEvent的用法
    取消office2010默认微软拼音输入法
    错误:在 ServiceModel 客户端配置部分中,找不到引用协定“*********.I******”的默认终结点元素。这可能是因为未找到应用程序的配置文件,或者是因为客户端元素中找不到与此协定匹配的终结点元素。
    ASP 空字符串、IsNull、IsEmpty区别分析
    asp.net防止多次登录的方法
    关于javascript的keycode
    学习资料
    关于javascript中的typeof和instanceof介绍
    完整的SQLHelper
    图片自动分割代码求注释
  • 原文地址:https://www.cnblogs.com/mingjiatang/p/4968049.html
Copyright © 2011-2022 走看看