WinForm试用ing = =。。DataGridView
其实仅仅用过一点点,且先把知道的技巧记一下,以后有学到再补充。
- 列宽的设置:关键是 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();即可。
- AutoSizeColumnsMode参数说明:(本段来自百度)
- 拖拽列位置:设置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。
- Frozen属性: