从datagridview动态删除列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从datagridview动态删除列相关的知识,希望对你有一定的参考价值。

我正在将数据集绑定到datagridview,我想让用户有可能删除(可能是通过复选框?)他不知道要看的列。

所以,一开始他看到5列,他只想看三个,所以他点击了什么,这些列消失了。

你用什么来给用户这个功能?

答案

如果您使用了复选框,则会出现以下情况:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    CheckBox c = (CheckBox)sender;
    if (c.Checked)
        Column1.Visible = true;
    else
        Column1.Visible = false;
}

您只需将Column1名称修改为要显示/隐藏的任何列,并将事件链接到正确的复选框。

在Form的构造函数中,我会做类似Checkbox1.checked = true;的事情,所以第一个_CheckChanged会隐藏它,但这取决于你。

另一答案

我相信你只需将特定列的可见标志设置为false即可完成此操作。

另一答案

我建议如下:

创建一个checkedListBox并为其中的每个列添加一个CheckBox项,这是代码:

foreach (DataGridViewColumn column in dataGridView1.Columns)
        {
            checkedListBox1.Items.Add(column.HeaderText, column.Visible);
            checkedListBox1.ItemCheck += (ss, ee) =>
                {
                    if (checkedListBox1.SelectedItem != null)
                    {
                        var selectedItem = checkedListBox1.SelectedItem.ToString();
                        dataGridView1.Columns[selectedItem].Visible = ee.NewValue == CheckState.Checked; 
                    }
                };
        }

祝好运!

以上是关于从datagridview动态删除列的主要内容,如果未能解决你的问题,请参考以下文章

C#在windowsform的datagridview表格里面添加一列删除按钮

求用c#在dataGridView中动态添加列的方法

DataGridView(部分)数据绑定自定义排序

DataGridView中如何动态添加列

C# datagridview 怎样动态设置列宽的值

DataGridView绑定DataTable动态生成列 并且将列名中文显示