一、添加行列並獲取信息
界面如下:
代碼如下:
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10
11 namespace DataGridView 12 { 13 public partial class Form1 : Form 14 { 15 int count = 0; 16 public Form1() 17 { 18 InitializeComponent(); 19 } 20
21 private void Form1_Load(object sender, EventArgs e) 22 { 23 //根據Header和所有單元格的內容自動調整行的高度
24 dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; 25 //添加三列
26 for (int i = 0; i < 3; i++) 27 { 28 dataGridView1.Columns.Add(new DataGridViewTextBoxColumn()); 29 dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; //設置所有列自適應寬度
30 } 31 //三列的標題
32 dataGridView1.Columns[0].HeaderText = "序號"; 33 dataGridView1.Columns[1].HeaderText = "日期"; 34 dataGridView1.Columns[2].HeaderText = "說明"; 35 //設置對齊方式和字體
36 dataGridView1.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; 37 dataGridView1.Font = new Font("宋體", 11); 38 } 39 //添加行
40 private void button1_Click(object sender, EventArgs e) 41 { 42 int index = this.dataGridView1.Rows.Add(); 43 this.dataGridView1.Rows[index].Cells[0].Value = count++; 44 this.dataGridView1.Rows[index].Cells[1].Value = "2"; 45 this.dataGridView1.Rows[index].Cells[2].Value = "監聽"; 46 } 47 //獲取信息
48 private void button2_Click(object sender, EventArgs e) 49 { 50 //獲取當前活動單元格內容
51 Console.WriteLine("當前活動單元格內容:" + dataGridView1.CurrentCell.Value); 52 //取得當前單元格的列Index
53 Console.WriteLine("當前單元格的列Index:" + dataGridView1.CurrentCell.ColumnIndex); 54 //取得當前單元格的行Index
55 Console.WriteLine("取得當前單元格的行Index:" + dataGridView1.CurrentCell.RowIndex); 56 // 設定 (1, 1) 為當前單元格
57 dataGridView1.CurrentCell = dataGridView1[1, 1]; 58 } 59 } 60 }
測試:
點擊添加:
選中(2,1)處的單元格,點擊獲取,命令行輸出:
1 當前活動單元格內容:2
2 當前單元格的列Index:1
3 取得當前單元格的行Index:2
活動單元格變為(1,1)處的單元格:
二、設置單元格只讀屬性
代碼如下:
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10
11 namespace DataGridView 12 { 13 public partial class Form1 : Form 14 { 15 int count = 0; 16 public Form1() 17 { 18 InitializeComponent(); 19 } 20
21 private void Form1_Load(object sender, EventArgs e) 22 { 23 //根據Header和所有單元格的內容自動調整行的高度
24 dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; 25 //添加三列
26 for (int i = 0; i < 3; i++) 27 { 28 dataGridView1.Columns.Add(new DataGridViewTextBoxColumn()); 29 dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; //設置所有列自適應寬度
30 } 31 //三列的標題
32 dataGridView1.Columns[0].HeaderText = "序號"; 33 dataGridView1.Columns[1].HeaderText = "日期"; 34 dataGridView1.Columns[2].HeaderText = "說明"; 35 //設置對齊方式和字體
36 dataGridView1.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; 37 dataGridView1.Font = new Font("宋體", 11); 38
39 /******************************新增加的代碼************************************/
40 dataGridView1.ReadOnly = true; //設置所有單元格都不可編輯 41 // 設置 DataGridView1 的第2列整列單元格為只讀
42 dataGridView1.Columns[1].ReadOnly = true; 43 // 設置 DataGridView1 的第3行整行單元格為只讀
44 dataGridView1.Rows[2].ReadOnly = true; 45 // 設置 DataGridView1 的[0,0]單元格為只讀
46 dataGridView1[0, 0].ReadOnly = true; 47 /**********************************************************************************/
48 } 49 //添加行
50 private void button1_Click(object sender, EventArgs e) 51 { 52 int index = this.dataGridView1.Rows.Add(); 53 this.dataGridView1.Rows[index].Cells[0].Value = count++; 54 this.dataGridView1.Rows[index].Cells[1].Value = "2"; 55 this.dataGridView1.Rows[index].Cells[2].Value = "監聽"; 56 } 57 //獲取
58 private void button2_Click(object sender, EventArgs e) 59 { 60 //獲取當前活動單元格內容
61 Console.WriteLine("當前活動單元格內容:" + dataGridView1.CurrentCell.Value); 62 //取得當前單元格的列Index
63 Console.WriteLine("當前單元格的列Index:" + dataGridView1.CurrentCell.ColumnIndex); 64 //取得當前單元格的行Index
65 Console.WriteLine("取得當前單元格的行Index:" + dataGridView1.CurrentCell.RowIndex); 66 // 設定 (1, 1) 為當前單元格
67 dataGridView1.CurrentCell = dataGridView1[1, 1]; 68 } 69 } 70 }
測試:
雙擊單元格,單元格不可編輯:
三、最新一行不顯示
通常 DataGridView 的最下面一行是用戶新追加的行(行頭顯示 * )
即不想顯示該新行,可以將 DataGridView 對象的 AllowUserToAddRows 屬性設置為 False。
代碼如下:
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10
11 namespace DataGridView 12 { 13 public partial class Form1 : Form 14 { 15 int count = 0; 16 public Form1() 17 { 18 InitializeComponent(); 19 } 20
21 private void Form1_Load(object sender, EventArgs e) 22 { 23 //根據Header和所有單元格的內容自動調整行的高度
24 dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; 25 //添加三列
26 for (int i = 0; i < 3; i++) 27 { 28 dataGridView1.Columns.Add(new DataGridViewTextBoxColumn()); 29 //設置所有列自適應寬度
30 dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; 31 } 32 //三列的標題
33 dataGridView1.Columns[0].HeaderText = "序號"; 34 dataGridView1.Columns[1].HeaderText = "日期"; 35 dataGridView1.Columns[2].HeaderText = "說明"; 36 //設置對齊方式和字體
37 dataGridView1.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; 38 dataGridView1.Font = new Font("宋體", 11); 39
40 //設置所有單元格都不可編輯
41 dataGridView1.ReadOnly = true; 42 // 設置 DataGridView1 的第2列整列單元格為只讀
43 dataGridView1.Columns[1].ReadOnly = true; 44 // 設置 DataGridView1 的第3行整行單元格為只讀
45 dataGridView1.Rows[2].ReadOnly = true; 46 // 設置 DataGridView1 的[0,0]單元格為只讀
47 dataGridView1[0, 0].ReadOnly = true; 48 } 49 //添加行
50 private void button1_Click(object sender, EventArgs e) 51 { 52 int index = this.dataGridView1.Rows.Add(); 53 this.dataGridView1.Rows[index].Cells[0].Value = count++; 54 this.dataGridView1.Rows[index].Cells[1].Value = "2"; 55 this.dataGridView1.Rows[index].Cells[2].Value = "監聽"; 56 /*****************新增加的代碼********************/
57 dataGridView1.AllowUserToAddRows = false; 58 /*************************************************/
59 } 60 //獲取
61 private void button2_Click(object sender, EventArgs e) 62 { 63 //獲取當前活動單元格內容
64 Console.WriteLine("當前活動單元格內容:" + dataGridView1.CurrentCell.Value); 65 //取得當前單元格的列Index
66 Console.WriteLine("當前單元格的列Index:" + dataGridView1.CurrentCell.ColumnIndex); 67 //取得當前單元格的行Index
68 Console.WriteLine("取得當前單元格的行Index:" + dataGridView1.CurrentCell.RowIndex); 69 // 設定 (1, 1) 為當前單元格
70 dataGridView1.CurrentCell = dataGridView1[1, 1]; 71 } 72 } 73 }
測試:
四、行列的隱藏和刪除
(1) 行、列的隱藏
1 DataGridView1.Columns[0].Visible = false; // DataGridView1的第一列隱藏
2 DataGridView1.Rows[0].Visible = false; // DataGridView1的第一行隱藏
2) 行頭、列頭的隱藏
1 DataGridView1.ColumnHeadersVisible = false; // 列頭隱藏
2 DataGridView1.RowHeadersVisible = false; // 行頭隱藏
(3) 行和列的刪除
1 //刪除名為"Column1"的列
2 DataGridView1.Columns.Remove("Column1"); 3 //刪除第一列
4 DataGridView1.Columns.RemoveAt(0); 5 //刪除第一行
6 DataGridView1.Rows.RemoveAt(0);
(4) 刪除選中行
1 foreach (DataGridViewRow r in DataGridView1.SelectedRows) 2 { 3 if (!r.IsNewRow) 4 { 5 DataGridView1.Rows.Remove(r); 6 } 7 }
五、禁止列或者行的Resize
(1) 禁止所有的列或者行的Resize
1 // 禁止用戶改變DataGridView1的所有列的列寬
2 DataGridView1.AllowUserToResizeColumns = false; 3 //禁止用戶改變DataGridView1の所有行的行高
4 DataGridView1.AllowUserToResizeRows = false;
但是可以通過 DataGridViewColumn.Width 或者 DataGridViewRow.Height 屬性設定列寬和行高。
(2) 禁止指定行或者列的Resize
1 // 禁止用戶改變DataGridView1的第一列的列寬
2 DataGridView1.Columns[0].Resizable = DataGridViewTriState.False; 3 // 禁止用戶改變DataGridView1的第一列的行寬
4 DataGridView1.Rows[0].Resizable = DataGridViewTriState.False;
(3) 列寬和行高的最小值的設定
1 // 第一列的最小列寬設定為 100
2 DataGridView1.Columns[0].MinimumWidth = 100; 3 // 第一行的最小行高設定為 50
4 DataGridView1.Rows[0].MinimumHeight = 50;
(4) 禁止用戶改變行頭的寬度以及列頭的高度
1 // 禁止用戶改變列頭的高度
2 DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; 3 // 設置用戶改變行頭的寬度
4 DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing;
六、列寬和行高自動調整的設定
(1) 設定所有單元格行高和列寬自動調整
1 // 設定包括Header和所有單元格的列寬自動調整
2 DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; 3 // 設定包括Header和所有單元格的行高自動調整
4 DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
(2) 設定指定單元格行高和列寬自動調整
1 // 第一列自動調整
2 DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells; 3 // 設定列頭的寬度可以自由調整
4 DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; 5 // 設定行頭的寬度可以自由調整
6 DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
七、行頭列頭的單元格
1 // 改變DataGridView1的第一列列頭內容
2 DataGridView1.Columns[0].HeaderCell.Value = "第一列"; 3 // 改變DataGridView1的第一行行頭內容
4 DataGridView1.Rows[0].HeaderCell.Value = "第一行"; 5 // 改變DataGridView1的左上頭部單元內容
6 DataGridView1.TopLeftHeaderCell.Value = "左上";
八、單元格的邊框、網格線樣式的設定
(1)DataGridView 的邊框線樣式的設定
DataGridView 的邊框線的樣式是通過 DataGridView.BorderStyle 屬性來設定的。
BorderStyle 屬性設定值是一個BorderStyle 枚舉: FixedSingle(單線,默認)、Fixed3D、None。
(2)單元格的邊框線樣式的設定
單元格的邊框線的樣式是通過 DataGridView.CellBorderStyle 屬性來設定的。
CellBorderStyle 屬性設定值是DataGridViewCellBorderStyle 枚舉。
(4) 單元格的邊框顏色的設定 單元格的邊框線的顏色可以通過 DataGridView.GridColor 屬性來設定的。
默認是 ControlDarkDark 。但是只有在 CellBorderStyle 被設定為 Single、SingleHorizontal、SingleVertical 的條件下才能改變其邊框線的顏色。
同樣,ColumnHeadersBorderStyle 以及 RowHeadersBorderStyle 只有在被設定為 Single 時,才能改變顏色