zoukankan      html  css  js  c++  java
  • WinForm中DataGridView的使用(一)

    • 数据绑定
      • 直接指定源数据(List<T>):this.DataSource = data;
      • 通常也可以直接指定DataTable类型的数据
        •  1 DataTable dt = new DataTable();
           2             DataColumn dc1 = new DataColumn(_column1Name, Type.GetType("System.String"));
           3             dt.Columns.Add(dc1);
           4             foreach (string searchText in VisualXmlApp.Instance.searchHistoryGridView.Take(5))
           5             {
           6                 DataRow dr = dt.NewRow();
           7                 dr[_column1Name] = searchText;
           8                 dt.Rows.Add(dr);
           9             }
          10             this.dgvDataSourceSearchHistory.DataSource = dt;
          View Code
      • 自定义列
        • 取消自动生成列:this.AutoGenerateColumns = false;
        • 自定义列数、列名、列宽权重、列填充
          •  1             this.Columns.Clear();
             2             this.ColumnCount = 3;
             3             this.Columns[0].Name = "Column 1";
             4             this.Columns[0].DataPropertyName = "VarName";
             5             this.Columns[0].FillWeight = 200;
             6             this.Columns[1].Name = "Column 2";
             7             this.Columns[1].DataPropertyName = "VarPath";
             8             this.Columns[1].FillWeight = 300;
             9             this.Columns[2].Name = "Column 2";
            10             this.Columns[2].FillWeight = 100;
            View Code
    • 样式
      • 整体背景色(当窗口变大时,空白处的颜色)
        • this.BackgroundColor = DataSourceUIParams.WindowBackColor;
      • 边框
        • 风格
          • DataGridView.BorderStyle
            • BorderStyle 枚举: FixedSingle(单线,默认)、Fixed3D、None
        • 颜色(所有边框,含普通数据行和头部)
          • this.GridColor = Color.FromArgb(173, 190, 203);
          • 如果要头部生效,别忘了取消系统风格影响:this.EnableHeadersVisualStyles=false;
          • 默认是 ControlDarkDark 。但是只有在 CellBorderStyle 被设定为 Single、SingleHorizontal、SingleVertical  的条件下才能改变其边框线的颜色。
        • 如果是自定义了一个控件继承自DataGridView,那么即使在这个控件中设置了不显示边框,在父控件中仍然需要再设置一次其BorderStyle = BorderStyle.None;
        • 其他可参考(如颜色、四个方位边框的单独设置):https://blog.csdn.net/yunhaic/article/details/7176015
      • 头部
        • 取消使用系统风格:this.EnableHeadersVisualStyles = false;
        • 行头
          • 取消显示行头
            • this.RowHeadersVisible = false;
          • 边框
            • 风格
              • 直接设置RowHeadersBorderStyle,默认是DataGridViewHeaderBorderStyle.Raised,可改为Single、None等。属性设定值是DataGridViewHeaderBorderStyle枚举的值
        • 列头
          • 取消显示列头
            • this.ColumnHeadersVisible = false;
          • 高度
            • 先把ColumnHeadersHeightSizeMode从默认的AutoSize设置为EnableResizing
            • 再用ColumnHeadersHeight直接设置高度
            • 注:代码构造函数中直接设置这两个属性也可以
            • 注:将DataGridView设置固定高度,并自动显示滚动条时,如果Header高度是AutoSize的,可能会使最后一行显示不全
          • 字体
          • 边框
            • 风格
              • 直接设置ColumnHeadersBorderStyle,默认是DataGridViewHeaderBorderStyle.Raised,可改为Single、None等。属性设定值是DataGridViewHeaderBorderStyle枚举的值
              • 同样,ColumnHeadersBorderStyle只能设定单元格全部边框线的式样。要单独改变单元格某一边边框式样的话,需要用到设定行头单元格的属性是: RowHeadersBorderStyle, 设定列头单元格属性是:ColumnHeadersBorderStyle
      • 数据行
        • 高度
          • this.RowTemplate.Height = 30;
        • 奇偶行
          • 背景色
            • this.AlternatingRowsDefaultCellStyle.BackColor = Color.FromArgb(223, 230, 237);
            • this.RowsDefaultCellStyle.BackColor = Color.White;
        • 边框
          • 风格
            • 直接设置CellBorderStyle,默认为BorderStyle.FixedSingle,但这个时候底边框有可能消失,可以考虑改为BorderStyle.Fixed3D
            • CellBorderStyle只能设定单元格全部边框线的式样。要单独改变单元格某一边边框式样的话,需要用到DataGridView.AdvancedCellBorderStyle属性。
    • 是否可编辑、新增、删除
      • this.ReadOnly = true;
      • this.AllowUserToAddRows = false;
      • this.AllowUserToDeleteRows = false;
    • 是否可调整列宽、行宽
      • this.AllowUserToResizeColumns = false;
        this.AllowUserToResizeRows = false;
    • 是否可选中及选中模式
      • 是否可多选:this.MultiSelect = false;
      • 设置选中模式
        • 直接设置SelectionMode属性,包括DataGridViewSelectionMode.FullRowSelect等选项
      • 取消首行或首个单元格的默认选中
        • 在DataGridView的RowsPrePaint事件处理函数中
          •  1         private void RowsPrePaintHandler(object sender, DataGridViewRowPrePaintEventArgs e)
             2         {
             3             int index = e.RowIndex;
             4 
             5             // cancel default selected first row
             6             if (index == 0)
             7             {
             8                 this.Rows[index].Selected = false;
             9             }
            10         }
            View Code
  • 相关阅读:
    在QT中应用中文
    DDA画直线
    裁剪算法
    VC6与office2007冲突的解决方法
    肾形图案
    OPENGL函数说明
    基数排序
    Qt信号和槽机制
    分形曼德尔波集合图形
    分形朱利亚集合图形1
  • 原文地址:https://www.cnblogs.com/wyp1988/p/9843062.html
Copyright © 2011-2022 走看看