C# DataGridView 指定列表旗標(index)/位置 進行 新增/刪除 特定資料列 [避免更新一筆需要整表刪除]
C# DataGridView 指定列表旗標(index)/位置 進行 新增/刪除 特定資料列 [避免更新一筆需要整表刪除]
GITHUB: https://github.com/jash-git/CS_DataGridView_Test-project
code:
namespace CS_DataGridView_Test { public partial class Form1 : Form { public Form1() { InitializeComponent(); } void dataGridView1Clean() { try { //-- //dataGridView1.ReadOnly = true;//唯讀 不可更改 dataGridView1.RowHeadersVisible = false;//DataGridView 最前面指示選取列所在位置的箭頭欄位 dataGridView1.Rows[0].Selected = false;//取消DataGridView的默認選取(選中)Cell 使其不反藍 dataGridView1.AllowUserToAddRows = false;//是否允許使用者新增資料 dataGridView1.AllowUserToDeleteRows = false;//是否允許使用者刪除資料 dataGridView1.AllowUserToOrderColumns = false;//是否允許使用者調整欄位位置 dataGridView1.AllowUserToResizeRows = false;//是否允許使用者改變行高 dataGridView1.AllowUserToResizeColumns = false;//是否允許使用者改變欄寬 dataGridView1.MultiSelect = false;//不允許多選;只能單選 for (int i = 0; i < dataGridView1.Columns.Count; i++) { dataGridView1.Columns[i].ReadOnly = true;//單一欄位禁止編輯 dataGridView1.Columns[i].DefaultCellStyle.NullValue = null;//允許單一圖片放空,不顯示X圖 } //設置所有行背景色 dataGridView1.RowsDefaultCellStyle.BackColor = Color.FromArgb(227, 227, 227); //設置奇數行背景色(下標從零開始) dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.FromArgb(204, 223, 229); //選擇顏色指定 dataGridView1.RowsDefaultCellStyle.SelectionBackColor = Color.FromArgb(207, 208, 192); //設定文字顏色 dataGridView1.RowsDefaultCellStyle.ForeColor = Color.FromArgb(0, 0, 0); dataGridView1.RowsDefaultCellStyle.SelectionForeColor = Color.FromArgb(0, 0, 0); //將行高調整到適合螢幕上當前顯示的行中所有單元格(包括標頭單元格)的內容。 dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells; //允許換行屬性設定,透過換行符號換行 dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True; dataGridView1.AllowUserToAddRows = false;//刪除空白列 dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;//整列選取 do { for (int i = 0; i < dataGridView1.Rows.Count; i++) { DataGridViewRow r1 = this.dataGridView1.Rows[i];//取得DataGridView整列資料 this.dataGridView1.Rows.Remove(r1);//DataGridView刪除整列 } } while (dataGridView1.Rows.Count > 0); } catch { } } public int m_intCount; private void Form1_Load(object sender, EventArgs e) { m_intCount = 0; dataGridView1Clean(); } private void button1_Click(object sender, EventArgs e)//Add { dataGridView1.Rows.Add(imageList1.Images[m_intCount%5], "DATA:"+ m_intCount); m_intCount++; dataGridView1.Rows[(dataGridView1.Rows.Count-1)].Selected = true;//設定選擇游標都在最後一筆 / 指定哪一列被選取 } private void button2_Click(object sender, EventArgs e)//Insert(select) { int index = dataGridView1.SelectedRows[0].Index;//取得被選取的第一列旗標位置 dataGridView1.Rows.Insert(index, imageList1.Images[m_intCount % 5], "DATA:" + m_intCount); m_intCount++; } private void button3_Click(object sender, EventArgs e)//Insert(index 1) - 新增變成第二筆 [因為C#從0開始] { dataGridView1.Rows.Insert(1, imageList1.Images[m_intCount % 5], "DATA:" + m_intCount); m_intCount++; } private void button4_Click(object sender, EventArgs e)//Del Last { dataGridView1.Rows[(dataGridView1.Rows.Count - 1)].Selected = true;//設定選擇游標都在最後一筆 / 指定哪一列被選取 int index = dataGridView1.SelectedRows[0].Index;//取得被選取的第一列旗標位置 dataGridView1.Rows.RemoveAt(index); } private void button5_Click(object sender, EventArgs e)//Del (select) { int index = dataGridView1.SelectedRows[0].Index;//取得被選取的第一列旗標位置 dataGridView1.Rows.RemoveAt(index); } private void button6_Click(object sender, EventArgs e)//Del(index 1) { dataGridView1.Rows.RemoveAt(1); } private void button7_Click(object sender, EventArgs e)//修改/改變 已經存在資料列內的資料內容 { int index = dataGridView1.SelectedRows[0].Index;//取得被選取的第一列旗標位置 dataGridView1.Rows[index].Cells[0].Value = imageList1.Images[m_intCount % 5]; dataGridView1.Rows[index].Cells[1].Value = "DATA:" + m_intCount; m_intCount++; } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)//在整列(整行)選取模式情況,判斷哪個欄位被觸發點擊事件 { MessageBox.Show("X:" + e.RowIndex + "Y:" + e.ColumnIndex); } } }