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
  • 相关阅读:
    LeetCode 1275. 找出井字棋的获胜者 Find Winner on a Tic Tac Toe Game
    LeetCode 307. 区域和检索
    LeetCode 1271 十六进制魔术数字 Hexspeak
    秋实大哥与花 线段树模板
    AcWing 835. Trie字符串统计
    Leetcode 216. 组合总和 III
    Mybatis 示例之 复杂(complex)属性(property)
    Mybatis 示例之 复杂(complex)属性(property)
    Mybatis 高级结果映射 ResultMap Association Collection
    Mybatis 高级结果映射 ResultMap Association Collection
  • 原文地址:https://www.cnblogs.com/wyp1988/p/9843062.html
Copyright © 2011-2022 走看看