DataGridViewButton列插入弄乱了我的 DataGridView 顺序

DataGridViewButtonColumn insertion messes up my DataGridView order

提问人:Egedi Rikárdó 提问时间:11/7/2023 更新时间:11/7/2023 访问量:44

问:

我创建了一个功能齐全的数据库,并将数据绑定到我的 DataGridView(我在我的代码dgv_db中称之为它)。我想在每行的末尾放置一个“编辑”按钮,如下所示:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            update_DataGridView1();
            editBtnCreation();
        }

        public void update_DataGridView1()
        {
            DatabaseDAO dbDAO = new DatabaseDAO();

            databaseBindingSource.DataSource = dbDAO.fetchTables(cb_table_choose.Text);
            dgv_db.DataSource = databaseBindingSource;
        }

        private void editBtnCreation()
        {
            DataGridViewColumnCollection columnCollection = dgv_db.Columns;

            if (dgv_db.Columns.Contains("Edit"))
            {
                dgv_db.Columns.Remove(dgv_db.Columns["Edit"]);
            }

            DataGridViewColumn tempColumn = columnCollection.GetLastColumn(DataGridViewElementStates.Visible, DataGridViewElementStates.None);
            int tempColumnIDX = tempColumn.DisplayIndex+1;

            var editBtn = new DataGridViewButtonColumn
            {
                Text = "Edit",
                Name = "Edit",
                UseColumnTextForButtonValue = true,
            };
            dgv_db.Columns.Insert(tempColumnIDX, editBtn);
        }

它把它放在行的末尾,但它也搞砸了我的列顺序,例如:

如果我评论“dgv_db。Columns.Insert(tempColumnIDX, editBtn);“ 列顺序: Column1、Column2、Column3 等

如果我在每行的末尾添加编辑按钮: 列 5 列 6 列 1 列 2 列 4 列 3 列 7 编辑按钮列

所以总而言之,如果我插入 DataGridViewButtonColumn,它会弄乱我的列顺序,但如果我不插入它,它就不会搞砸。

为什么会这样,我能做些什么来解决这个问题?

我试图用 .冻结了,但根本没有帮助。

C# WinForms DataGridView

评论

0赞 stuartd 11/7/2023
你试过吗?这应该把新列放在最后。dgv_db.Columns.Add(...)
0赞 Egedi Rikárdó 11/7/2023
我刚刚试过,它仍然搞砸了我的订单。:(
0赞 Jimi 11/8/2023
在设置新 DataSource 之前添加,然后添加新的 Button Column。无需检查它是否已经存在。您可以存储此对象,而不是每次都创建一个新对象dgv_db.Columns.Clear(); dgv_db.DataSource = null;
0赞 Egedi Rikárdó 11/8/2023
谢谢你,我爱你,它帮助了<3

答: 暂无答案