一、引言
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控件進行定制,可以實現各種你意想不到的顯示效果。
盡等你去發掘··············