Liny_@NotePad

沉迷ACG中

WinForm试用ing = =。。DataGridView

YOYO posted @ 2010年8月27日 19:20 in 【C#】 with tags WinForm , 3488 阅读

其实仅仅用过一点点,且先把知道的技巧记一下,以后有学到再补充。

目前只知道调整列宽、拖拽列和判断某行是否被编辑……

  • 列宽的设置:关键是 AutoSizeColumnsMode 的设置。
    • AutoSizeColumnsMode参数说明:(本段来自百度)
      • AllCells 调整列宽,以适合该列中的所有单元格的内容,包括标题单元格。  
      • AllCellsExceptHeader 调整列宽,以适合该列中的所有单元格的内容,不包括标题单元格。  
      • ColumnHeader 调整列宽,以适合列标题单元格的内容。  
      • DisplayedCells 调整列宽,以适合当前屏幕上显示的行的列中的所有单元格的内容,包括标题单元格。
      • DisplayedCellsExceptHeader 调整列宽,以适合当前屏幕上显示的行的列中的所有单元格的内容,不包括标题单元格。
      • Fill 调整列宽,使所有列的宽度正好填充控件的显示区域,只需要水平滚动保证列宽在 DataGridViewColumn.MinimumWidth 属性值以上。相对列宽由相对 DataGridViewColumn.FillWeight 属性值决定。
      • None 列宽不会自动调整。
      • NotSet 列的大小调整行为从 DataGridView.AutoSizeColumnsMode 属性继承。
    • 测试应用过以下场景:
      • 用户可以自定义调整:前提是DataGridView的AllowUserToResizeColumns属性必须为true
      • 自动调整列宽(不显示横向滚动条):直接将AutoSizeColumnsMode设为Fill即可
      • 根据内容调整列宽,用户可自定义调整,显示横向滚动条:
        将AutoSizeColumnsMode设为None,然后为DataGridView加上DataBindingComplete事件,内容为dgv.AutoResizeColumns();即可。
         
  • 拖拽列位置:设置DataGridView的AllowUserToOrderColumns属性为true即可。
     
  • 判断某行是否被编辑:
    加入一个隐藏列,默认为false,当CellValueChanged发生时设置该列为true,在检查时遍历每一行该列值是否为真即表示被编辑过,注意的是执行完更新后应当将所有列置为原状态。
     
  • 其他算不上技巧的说明:
    • Frozen属性:
      • 列的Frozen属性:在横向滚动条往后拖时该列依然会显示(用于固定重要列位置)
      • 行的Frozen属性:在垂直滚动条往下拖时该行依然会显示(用于固定重要行位置)
    • ColumnType属性:列的类型,如CheckBox、Button、ComboBox、Image、Link、TextBox。
    • HeadText属性:列名,比如“编号”、”名称“……什么的
    • DataPropertyName属性:绑定的数据源中对应属性的名称,比如ID、Name……什么的
    • (Name)属性:列的Name,在编码时可通过dgv.Rows[i].Cells["IsSelected"]这样的方式来获取dgv中第i行名为IsSelected的列的对象。
      同一个WinForm中不同DataGridView的列的Name不能一致,比如ID1、Name1什么的……
    • SortMode属性:与排序有关,具体没用过,见MSDN。

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter