从datagridview动态删除列

问题描述 投票:1回答:3

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

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

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

c# winforms datagridview
3个回答
2
投票

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

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会隐藏它,但这取决于你。


1
投票

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


1
投票

我建议如下:

创建一个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; 
                    }
                };
        }

祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.