WinForm 控制項 DataGridView 常用操作
1、取消列自動生成
在窗體load
事件裡面設置表格dataGridView的AutoGenerateColumns
為 false
dataGridView.AutoGenerateColumns = false
2、取消所有選中單元格
調用方法ClearSelection
dataGridView.ClearSelection()
3、單元格自動換行顯示
設置DefaultCellStyle
裡面的WarapMode
屬性為 true
4、行顯示高度自動調節
設置屬性 AutoSizeRowMode
為 DisplayedCellsExceptHeaders
設置方法AutoResizeColumns
dataGridView.AutoSizeRowsMode=DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders
dataGridView.AutoResizeColumns();
5、首列添加序號
表格RowPostPaint
事件
private void dataGridView_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
//獲取行對象
var row = dataGridView.Rows[e.RowIndex];
//對行的第一列value賦值
row.Cells[0].Value = row.Index + 1;
}
6、行頭繪製圖片
表格RowPostPaint
事件繪製圖片或者數字
private void dataGridView_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
//讀取要顯示的圖片
Image img = Properties.Resources.img
//繪製圖標,圖標繪製的坐標位置可自己調節
e.Graphics.DrawImage(img, e.RowBounds.Left + dataGridView.RowHeadersWidth - 40, e.RowBounds.Top + 4, 16, 16);
}
7、轉換單元格顯示
在表格的CellFormatting
事件裡面進行轉換操作,比如一個狀態欄位是int類型,顯示需要轉換成對應的字元串顯示。
private void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
//轉換第一列
if (e.ColumnIndex == 0)
{
//取得行
var row = dataGridView.Rows[e.RowIndex];
//取得列值,如果是綁定的數據,可以將row.DataBoundItem轉換成綁定對象再取值判斷
var cell=row.cell[0].value.ToString();
string grad = "";
if cell == "1")
grad = "A";
else if (cell == "2")
grad = "B";
else if (cell == "3")
grad = "C";
else if (cell == "4")
grad = "D";
else if (cell == "5")
grad = "E";
e.Value = grad;
}
}
8、右鍵選中單元格
在表格的CellMouseDown
事件裡面設置選中行
private void dataGridView_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == MouseButtons.Right && e.RowIndex > -1 && e.ColumnIndex > -1)
{
dataGridView.CurrentRow.Selected = false;
dataGridView.Rows[e.RowIndex].Selected = true;
}
}
9、修改單元格值,單行刷新重繪
//dgvBook.SelectedRows[0].Index 為要刷新的行號
dataGridView.InvalidateRow(dgvBook.SelectedRows[0].Index);