WinForm 控制項 DataGridView 常用操作

1、取消列自動生成

在窗體load事件裡面設置表格dataGridView的AutoGenerateColumns為 false

dataGridView.AutoGenerateColumns = false

2、取消所有選中單元格

調用方法ClearSelection

dataGridView.ClearSelection()

3、單元格自動換行顯示

設置DefaultCellStyle 裡面的WarapMode 屬性為 true

image.png

4、行顯示高度自動調節

設置屬性 AutoSizeRowModeDisplayedCellsExceptHeaders 設置方法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);
Tags: