1,當前選擇的的單元格屬性取得、變更
private void button3_Click(object sender, EventArgs e)
??????? {?
???????????
?????????? //當前選擇的的單元格屬性取得、變更
??????????? listBox1.Items.Add("當前選擇的表格值(代碼:dataGridView1.CurrentCell.Value)=" + dataGridView1.CurrentCell.Value);
??????????? listBox1.Items.Add("當前選擇的表格值(代碼:dataGridView1.CurrentCell.ColumnIndex)=" + dataGridView1.CurrentCell.ColumnIndex);
??????????? listBox1.Items.Add("當前選擇的表格值(代碼:dataGridView1.CurrentCell.RowIndex)=" + dataGridView1.CurrentCell.RowIndex);
??????????? //設置[1,1]單元格為當前選擇的單元格
??????????? dataGridView1.CurrentCell = dataGridView1[1,1];
??????????? listBox1.Items.Add("當前選擇的表格值(代碼:dataGridView1.CurrentCell.RowIndex)=" + dataGridView1.CurrentCell);
??????? }
運行時,需要先按DataGridViewOpar ,它會創建DataGridView數據視圖實例,然后再按DataGridViewOparGather按鈕。
2,DataGridView編輯屬性
//全部單元格只讀
????????? ??dataGridView1.ReadOnly = true;
??????????? //指定行列單元格只讀
??????????? dataGridView1.Columns[1].ReadOnly = true;
??????????? dataGridView1.Rows[2].ReadOnly = true;
?? ?dataGridView1[0, 0].ReadOnly = true;
????????? //編輯指定單元格
private void dataGridView1_CellBeginEdit(object sender,
??? DataGridViewCellCancelEventArgs e)
{
??? string msg = String.Format("編輯表格 ({0}, {1})",
??????? e.ColumnIndex, e.RowIndex);
??? this.Text = msg;
}
?
private void dataGridView1_CellEndEdit(object sender,
??? DataGridViewCellEventArgs e)
{
??? string msg = String.Format("完成編輯 ({0}, {1})",
??????? e.ColumnIndex, e.RowIndex);
??? this.Text = msg;
}
3,DataGridView禁止用戶追加新行
dataGridView1.AllowUserToAddRows = false;
4,判斷當前選中行是否為新追加的行
if (dataGridView1.CurrentRow.IsNewRow = true)
?????????? ?{
??????????????? MessageBox.Show("你選定的是新行");
??????????? }
5,DataGridView設定刪除行
//允許用戶刪除行操作
dataGridView1.AllowUserToDeleteRows = true;
//雙擊DataGridView屬性框中事件列表中的以下兩個事件,添加代碼如下
//提示是否刪除指定行數據
??????? private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
??????? {
??????????? DialogResult diaR = MessageBox.Show("是否刪除該行?", "確認", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
??????????? if (diaR == DialogResult.OK)
??????????? {
??????????????? e.Cancel = false;
?? ?????????}
}
//提示刪除了哪一行數據
??????? private void dataGridView1_UserDeletedRow(object sender, DataGridViewRowEventArgs e)
??????? {
??????????? System.Text.StringBuilder messageBoxCS = newSystem.Text.StringBuilder();
??????????? messageBoxCS.AppendFormat("{0} = {1}", "行號為", e.Row);
??????????? messageBoxCS.AppendLine();
??????????? DialogResult diaR = MessageBox.Show("刪除了" + messageBoxCS.ToString(), "確認");
???????????
??????? }
6,設置不顯示指定行,設置刪除選定的行或列
//顯示指定行或列
dataGridView1.Columns[0].Visible = false;
?????? ?????dataGridView1.Rows[0].Visible = false;
??????????? dataGridView1.ColumnHeadersVisible = false;
??????????? dataGridView1.RowHeadersVisible = false;
?
??????????? //刪除指定行
??????????? dataGridView1.Columns.Remove("danwei");
??????????? dataGridView1.Columns.RemoveAt(0);
??????????? dataGridView1.Rows.RemoveAt(0);
//刪除選定的多行
?? ?????????foreach(? DataGridViewRow r in dataGridView1.SelectedRows)
??????????? {
??????????????? if (r.IsNewRow == false)
??????????????? {
??????????????????? dataGridView1.Rows.Remove(r);
??????????????? }
???? }
7,取得選定的行、列、單元格
//選定的單元格
??????????? foreach (DataGridViewCell c in dataGridView1.SelectedCells)
??????????? {
??????????????? string cr = string.Format("{0},{1}", c.ColumnIndex, c.RowIndex);
??????????????? listBox1.Items.Add("選定的單元格位置是:" + cr);
???? ?}
//選定的行/列
??????????? foreach (DataGridViewRow c in dataGridView1.SelectedRows)
??????????? {
??????????????? listBox1.Items.Add("選定的行是:" + c.RowIndex);
???? }
foreach (DataGridViewColumn c indataGridView1.SelectedColumns)
??????????? {
??????????????? listBox1.Items.Add("選定的列是:" + c.ColumnIndex);
???? }
???????? //指定選定單元格
??????????? dataGridView1[0, 0].Selected = true;
???????? dataGridView1.Rows[0].Selected = true;
??????????? dataGridView1.Columns[0].Selected = true;
?
//設置行首和左上角的文字
??????????? dataGridView1.Rows[0].HeaderCell.Value = "第1行";
??????????? dataGridView1.TopLeftHeaderCell.Value = "左上角";
8,手動追加列
//手動追加列
??????????? dataGridView1.AutoGenerateColumns=false;
??????????? dataGridView1.DataSource=ds;
??????????? DataGridViewTextBoxColumn txtCol=newDataGridViewTextBoxColumn();
??????????? txtCol.DataPropertyName="danwei";
??????????? txtCol.Name="col1";
??????????? txtCol.HeaderText="單位";
??????????? dataGridView1.Columns.Add(txtCol);
9,單元格內輸入值正確性判斷
?? 在DataGridView控件的屬性處,選擇以下事件。
錯誤文本請求:
??????? private void dataGridView1_CellErrorTextNeeded(object sender, DataGridViewCellErrorTextNeededEventArgs e)
??????? {
??????????? if ((dataGridView1.Columns[e.ColumnIndex].Name == "ID") && (dataGridView1.Columns["ID"].ToString()==""))
??????????? {
??????????????? dataGridView1.Rows[e.RowIndex].ErrorText="值類型錯誤";
??????????? }
??????? }
??? 輸入值有效性檢查:
??????? private void dataGridView1_CellValidated(object sender, DataGridViewCellEventArgs e)
??????? {
??????????? dataGridView1.Rows[e.RowIndex].ErrorText="輸入值無效";
??????? }
10,列中顯示選擇框控件CheckBox
//列中顯示選擇框CheckBox
??????????? DataGridViewCheckBoxColumn column1= newDataGridViewCheckBoxColumn();
?????????? {
??????????????? column1.HeaderText = "選擇框";
??????????????? column1.Name = "checkbox";
??????????????? column1.AutoSizeMode =
??????????????? DataGridViewAutoSizeColumnMode.DisplayedCells;
??????????????? column1.FlatStyle = FlatStyle.Standard;
???? //顯示選擇框的三種狀態
???????????????? column1.ThreeState = true;
??????????? }
??????????? dataGridView1.Columns.Add(column1);
11,插入新的一列到指定單元格列
//插入新的一列到指定單元格列
???? dataGridView1.Columns.Insert(3, column1);
12,單元格添加下拉框
????????? //單元格添加下拉框
??????????? DataGridViewComboBoxColumn dcombo = newDataGridViewComboBoxColumn();
??????????? dcombo.Items.Add("中國");
??????????? dcombo.Items.Add("美國");
??????????? dcombo.Items.Add("德國");
??????????? dcombo.Items.Add("日本");
??????????? dcombo.Items.Add("英國");
??????????? dcombo.Items.Add("法國");
??????????? dcombo.Name = "combo";
??????????? //顯示的位置列
???????? ???// dcombo.DisplayIndex = 1;
??????????? dcombo.HeaderText = "國家";
??????????? //綁定數據庫的值時使用以下屬性
??????????? //dcombo.DataPropertyName = "danwei";
??????????? dataGridView1.Columns.Add(dcombo);
以上顯示的下拉框,選擇時需要點擊三次,第一次選中單元格,第二次啟用編輯,第三次打開下拉框。
如果需要一次點擊打開下拉框,可以啟用DataGridView的事件CellEnter();
代碼如下:
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
??????? {
??????????? //實現單擊顯示列表框
?????????? if (dataGridView1.Columns[e.ColumnIndex] isDataGridViewComboBoxColumn &&? e.RowIndex != -1)
??????????? {
??????????????? SendKeys.Send("{F4}");
??????????? }
??????? }
13,單元格顯示按鈕控件和顯示超級鏈接
同上,只不過使用的類為:
DataGridViewButtonColumn dbotton;
相關代碼:
//顯示按鈕控件
??????????? DataGridViewButtonColumn col=new DataGridViewButtonColumn();
??????????? col.Name="Button";
??????????? col.UseColumnTextForButtonValue=true;
??????????? col.Text = "按鈕";
??????????? dataGridView1.Columns.Add(col);
觸發的事件為:
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
??????? {
??????????? if (dataGridView1.Columns[e.ColumnIndex].Name=="Button")
??????????? {
??????????????? MessageBox.Show("觸發了按鈕");
??????????? }
?}
?超級鏈接是:DataGridViewLinkColumn
連接代碼同上。
單元格列顯示圖像的是:DataGridViewImageColumn
代碼如下:
//顯示圖像
??????????? DataGridViewImageColumn dgvI=new DataGridViewImageColumn();
??????????? dgvI.Name="Image";
??????????? dgvI.ValuesAreIcons=false;
??????????? dgvI.Image = new Bitmap("c://windows//Blue Lace 16.bmp");
??????????? dgvI.ImageLayout=DataGridViewImageCellLayout.Zoom;
??????????? dgvI.Description="測試的圖片";
??????????? dataGridView1.Columns.Add(dgvI);
??? dataGridView1["Image", 0].Value = newBitmap("c://windows//Blue Lace 16.bmp");
?
?