首页 > 解决方案 > 以编程方式将 DataGridViews 添加到 Form

问题描述

我有一个问题,我正在寻找一些如何实现它的想法。我有一个带有 ComboBoxColumns、ButtonColumns 和 TextBoxColumns 的 DataGridView。

下面我有两个按钮,一个用于添加新的 DataGridView,一个用于删除最后创建的 DataGridView。

如何在单击添加按钮时在现有的 DataGridView 下方添加一个新的 DataGridView 并在单击删除按钮时将其删除。

创建新DataGridView的代码,但我每次都想要一个新的DataGridView,实际上它只是创建第二个然后在最后添加列。

private void add(object sender, EventArgs e)
{
        try
        {
            dataGridView2.Visible = true;
            dataGridView2.Width = 725;
            dataGridView2.BorderStyle = BorderStyle.None;
            dataGridView2.ScrollBars = ScrollBars.Both;
            dataGridView2.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            dataGridView2.BackgroundColor = Color.White;
            dataGridView2.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dataGridView2.CellBorderStyle = DataGridViewCellBorderStyle.None;

            for (var i = 0; i < rb_insert_manually_datagridview_detailed.ColumnCount; i++)
            {
                if (rb_insert_manually_datagridview_detailed.Columns[i].GetType().Name == "DataGridViewComboBoxColumn")
                {
                    var cmbColumn = new DataGridViewComboBoxColumn();
                    cmbColumn.DataPropertyName = rb_insert_manually_datagridview_detailed.Columns[i].HeaderText;
                    cmbColumn.HeaderText = rb_insert_manually_datagridview_detailed.Columns[i].HeaderText;
                    cmbColumn.ValueMember = rb_insert_manually_datagridview_detailed.Columns[i].HeaderText;
                    cmbColumn.DisplayMember = rb_insert_manually_datagridview_detailed.Columns[i].HeaderText;
                    cmbColumn.FlatStyle = FlatStyle.Flat;
                    dataGridView2.Columns.Add(cmbColumn);
                }
                if (rb_insert_manually_datagridview_detailed.Columns[i].GetType().Name == "DataGridViewButtonColumn")
                {
                    var btnColumn = new DataGridViewButtonColumn();
                    btnColumn.DataPropertyName = rb_insert_manually_datagridview_detailed.Columns[i].HeaderText;
                    btnColumn.HeaderText = rb_insert_manually_datagridview_detailed.Columns[i].HeaderText;
                    btnColumn.FlatStyle = FlatStyle.Flat;
                    dataGridView2.Columns.Add(btnColumn);
                }

                if (rb_insert_manually_datagridview_detailed.Columns[i].GetType().Name == "DataGridViewTextBoxColumn")
                {
                    var txtColumn = new DataGridViewTextBoxColumn();
                    txtColumn.DataPropertyName = rb_insert_manually_datagridview_detailed.Columns[i].HeaderText;
                    txtColumn.HeaderText = rb_insert_manually_datagridview_detailed.Columns[i].HeaderText;
                    dataGridView2.Columns.Add(txtColumn);
                }
            }

            dataGridView2.Location = new Point(rb_insert_manually_datagridview_detailed.Location.X, rb_insert_manually_btn_new_binder.Location.Y + 40);
            this.Controls.Add(dataGridView2);
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error", "Fehler", MessageBoxButtons.Error, MessageBoxIcon.Error);
        }
}

要删除我实际上使用的 DataGrid 可见但它不起作用,并且在注释掉的版本上它会抛出异常

private void delete(object sender, EventArgs e)
{
        try
        {
            /*                dataGridView2.Columns.Remove("col1");
                            dataGridView2.Columns.Remove("col2");
                            dataGridView2.Columns.Remove("col3");
                            dataGridView2.Columns.Remove("col4");
                            dataGridView2.Columns.Remove("col5");
                            dataGridView2.Columns.Remove("col6");*/
            dataGridView2.Visible = false;
        }
        catch
        {

                MessageBox.Show("Kann letzen Binder nicht löschen", "Warnung", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }
}

我感谢每一个帮助,想法。

标签: c#.net

解决方案


推荐阅读