關於Datagridview控件用法的一些總結


一、引言

Datagridview控件在winform開發中還是比較常用,一般的數據庫系統都會使用它,但是想要友好的展示數據,形成良好的用戶界面,那么就要對c#庫中默認的Datagridview設置進行更改,以達到友好界面的需求。

下面就介紹一下Datagridview常見的用法。

二、Datagridview設置

1、列設置

a)、列的寬度鋪滿這個控件

  設置如下:把AutoSizeColumnsMode=Fill;//可以在屬性窗口中設置

b)、列名居中

代碼如下:

this.dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; //設置表頭的格式(居中顯示)

c)、禁止編輯某列

代碼如下: 

 //禁止某一些列編輯
 dataGridView1.ReadOnly = false;
 foreach (DataGridViewColumn c in dataGridView1.Columns)
 {
     if (c.Index != 2)
        c.ReadOnly = true;
 }

 

d)、禁止列點擊排序

代碼如下:

 //不能被排序
foreach (DataGridViewColumn c in dataGridView1.Columns)
{
       c.SortMode = DataGridViewColumnSortMode.NotSortable;
 }

 

e)、設置列的字體

 this.dataGridView1.RowsDefaultCellStyle.Font = new Font("宋體", 10);

 

f)、設置列寬

this.dataGridView1.Columns[1].Width = 80; this.dataGridView1.Columns[2].Width = 60;

 g)、設置列顯示模式

需要將第一列的單元格的內容全部顯示出來,代碼如下:

this.dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells ;

h)、禁止最左邊的空列頭顯示

 this.dgvSymbol.RowHeadersVisible = false;

 

2、行設置

a)、設置字體

代碼如下:

this.dataGridView1.ColumnHeadersDefaultCellStyle.Font = new Font("仿宋", 13,FontStyle.Bold );

 

b)、改變默認的選中的顏色

代碼如下:

 dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Black;
 dataGridView1.DefaultCellStyle.SelectionForeColor = Color.White;

 

c)、允許每個單元格多行顯示

代碼如下:

this.dataGridView1 .DefaultCellStyle.WrapMode = DataGridViewTriState.True;

 

d)、設置每個單元格居中

代碼如下:

foreach (DataGridViewColumn item in this.dataGridView1.Columns)
{
           item.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;//設置每個單元格的格式(居中)
 }

 

e)、清除選擇的單元格

代碼如下:

foreach (DataGridViewCell c in this.dataGridView1.SelectedCells)
{
       c.Selected = false;
}

 

3、在每行的左邊為每行添加一個從1開始遞增的序號

效果如下:

首先為Datagridview控件添加一個單元格繪制的事件RowPostPaint,然后在該事件下面添加一些繪制的代碼就行了,代碼如下:

private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            SolidBrush b = new SolidBrush(this.dataGridView1.RowHeadersDefaultCellStyle.ForeColor);
            e.Graphics.DrawString((e.RowIndex + 1).ToString(System.Globalization.CultureInfo.CurrentUICulture), this.dataGridView1.DefaultCellStyle.Font, b, e.RowBounds.Location.X + 20, e.RowBounds.Location.Y + 6);
            e.Graphics.FillRectangle(Brushes.White , new Rectangle(new Point(e.RowBounds.Location.X + 2, e.RowBounds.Location.Y + 2), new Size(20, 20)));//隱藏每行前面的圖標
        }

 

4、如何為列添加其他類型的列(而不是DataGridViewTextBoxColumn)並且綁定相應的數據源

一般的將數據查詢所獲取的表格DataTable對象綁定到Datagridview表格,我們只寫一句代碼:this.dataGridView1.DataSource=dtQueryResult;這樣做雖然方便,但是卻不人性化,顯示的結果都是顯示在DataGridViewTextBoxColumn中,而且列的標題都是查詢中數據庫的字段,並不是我們想要的顯示的字段,那么如何根據數據庫查詢的表格數據對Datagridview的列的類型及其顯示進行名稱進行定制呢?

假設從數據庫中查詢出來的數據列有(id,eventMark,timeBlock,typeName,isComplete(bit))四個字段。

顯示的要求

  • 1、id不讓顯示
  • 2、eventMark顯示名稱為:時間、timeBlock顯示名稱為:時間段、typeName顯示名稱為:類型名稱、isComplete顯示名稱為:狀態
  • 2、typeName的類型為DataGridViewComboBoxColumn類型,並綁定數據源,isComplete列顯示的類型為DataGridViewCheckBoxColumn類型。

 

根據設置代碼如下:

第一步還是不變,依然是綁定數據源this.dataGridView1.DataSource=dtQueryResult。

            this.dataGridView1.AutoGenerateColumns = false;

DataGridViewTextBoxColumn dtEvent = new DataGridViewTextBoxColumn(); dtEvent.DataPropertyName = "eventMark"; dtEvent.HeaderText = "事件"; dataGridView1.Columns.Add(dtEvent); //添加timeBlock項 DataGridViewTextBoxColumn dtTime = new DataGridViewTextBoxColumn(); dtTime.DataPropertyName = "timeBlock"; dtTime.HeaderText = "時間段"; dataGridView1.Columns.Add(dtTime); //添加typeName項 DataGridViewComboBoxColumn dtType = new DataGridViewComboBoxColumn(); dtType.DataPropertyName = "typeName"; dtType.HeaderText = "類型"; dtType.DataSource = TypeNames.GetTypeNames();//綁定combox顯示的數據源 dataGridView1.Columns.Add(dtType); //添加isComplete項 DataGridViewCheckBoxColumn dtCheck = new DataGridViewCheckBoxColumn(); dtCheck.DataPropertyName = "isComplete"; dtCheck.HeaderText = "狀態"; dataGridView1.Columns.Add(dtCheck);

 

三、總結

Datagridview的用法遠遠不及上述說的那么一些,還有很多實用的功能值得我們的去探索,包括他的重繪、事件處理等等。還可以根據自己的項目的需求可以對Datagridview控件進行定制,可以實現各種你意想不到的顯示效果。

盡等你去發掘··············

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM