DataGridView控制元件之多行資料的選中與刪除功能
阿新 • • 發佈:2019-01-26
DataGridView控制元件之多行資料的選中與刪除步驟:
(1)建立Windows窗體程式,並在窗體上防止一個dataGridView控制元件名字為dataGridView1,兩個按鈕控制元件(ADD和Delete),名字分別為AddBtn、DeleteBtn。
(2)在窗體的載入程式中,設定dataGridView1控制元件的屬性,程式碼如下:
(3) AddBtn按鈕的單擊事件中實現為dataGridView控制元件靜態新增行資料的功能,具體程式碼如下:/// <summary> /// 窗體載入的事件處理函式 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form1_Load(object sender, EventArgs e) { //設定控制元件選中選中的模式 //單擊單元格或行標題可以選中整行 this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; //單擊單元格或列標題可以選中整列 //this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullColumnSelect; //選中單個或多個單元格 //this.dataGridView1.SelectionMode = DataGridViewSelectionMode.CellSelect; //不允許使用者調整列的排列順序 this.dataGridView1.AllowUserToOrderColumns = false; //不允許使用者調整列的大小 this.dataGridView1.AllowUserToResizeColumns = false; //不允許使用者調整行的大小 this.dataGridView1.AllowUserToResizeRows = false; }
/// <summary> /// 按鈕單擊事件處理函式 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void AddBtn_Click(object sender, EventArgs e) { for (int i = 0; i < 10; i++) { //新增新的一行 this.dataGridView1.Rows.Add();//此操作新增的行為非共享行 dataGridView1.Rows[i].Cells[0].Value = (i + 1).ToString(); dataGridView1.Rows[i].Cells[1].Value = (i + 5).ToString(); dataGridView1.Rows[i].Cells[2].Value = (i + 10).ToString(); dataGridView1.Rows[i].Cells[3].Value = (i + 1).ToString(); } }
(4)DeleteBtn按鈕的單擊事件中實現刪除dataGridView1控制元件中選中行的資料的功能,具體程式碼如下:
/// <summary> /// 按鈕單擊事件處理函式 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void DeleteBtn_Click(object sender, EventArgs e) { try { //選中的行數 int iCount = dataGridView1.SelectedRows.Count; if (iCount < 1) { MessageBox.Show("Delete Data Fail!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (DialogResult.Yes == MessageBox.Show("是否刪除選中的資料?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information)) { for (int i = 0; i < this.dataGridView1.Rows.Count-1; i++) //迴圈遍歷所有行 {
<span style="white-space:pre"> </span>if(true==this.dataGridView1.Rows[i].Selected)//當前行處於選中狀態,則將其刪除
<span style="white-space:pre"> </span>this.dataGridView1.Rows.RemoveAt(i);
}
//刪除任意行資料後,應該重新整理dataGridView表格,使索引值從上至下按大小順序排序
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
dataGridView1.Rows[i].Cells[0].Value = i + 1;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
注意:由於將dataGridView控制元件的SelectMode屬性設定為DataGridViewSelectionMode.FullRowSlect屬性,所以在單擊dataGridView控制元件時無論是單擊單元格還是單擊行標題都會選中改行。如果想實現單擊某個單元格只選中該單元格可以設定SelectMode屬性值為DataGridViewSelectMode.CellSelect。同理如果要實現單擊單元格選中一列的功能可以設定SelectMode屬性值為DataGridViewSelectMode.FullColumnSelect.