1. 程式人生 > >DataGridView控制元件之多行資料的選中與刪除功能

DataGridView控制元件之多行資料的選中與刪除功能

DataGridView控制元件之多行資料的選中與刪除步驟:

(1)建立Windows窗體程式,並在窗體上防止一個dataGridView控制元件名字為dataGridView1,兩個按鈕控制元件(ADD和Delete),名字分別為AddBtn、DeleteBtn。

(2)在窗體的載入程式中,設定dataGridView1控制元件的屬性,程式碼如下:

        /// <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;
        }
(3) AddBtn按鈕的單擊事件中實現為dataGridView控制元件靜態新增行資料的功能,具體程式碼如下:
        /// <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.