C# DataGridView 指定列表旗標(index)/位置 進行 新增/刪除 特定資料列 [避免更新一筆需要整表刪除]

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);
        }
    }
}

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *