使DataGridViewColumn不可隐藏

时间:2017-06-01 15:21:15

标签: c# winforms

我在 winforms 项目中使用DataGridView控件。 我要求允许用户编辑此控件:隐藏/显示他想要的列。 但是,有一些特定的列不允许用户隐藏。 我正在查看DataGridViewColumn的所有属性,似乎没有人可以帮助我。

如何使DataGridView列无法隐藏?

修改

以下是我正在尝试实施的完整要求:

用户可以右键单击DataGridView并获取新表单,其中列出了包含复选框的所有列。因此,他可以通过检查相对复选框来决定要隐藏哪个列以及要保留哪个列。 我正在为不可隐藏的列寻找标志或属性,因此我可以从列出的(可编辑的)列中删除它。

我不喜欢硬编码不可编辑的列,因为我必须在孔应用程序中进行相同的思考。我有大约10 DataGridView

1 个答案:

答案 0 :(得分:0)

就像@Christopher所说的那样,你可能有一组要设置隐藏的列,而另一些则不允许隐藏它们。你也有很多DataGridViews,我建议你写一些公共静态方法:

public static bool set_never_hide_column(DataGridView dgv, int[] col)
    {
        try
        {
            foreach (DataGridViewColumn x in dgv.Columns)
            {
                if (col.Contains(dgv.Columns.IndexOf(x)))
                {
                    x.Tag = true;
                }
                else
                {
                    x.Tag = false;
                }
            }
            return true;
        }
        catch
        {
            return false;
        }
    }

    public static bool set_hide_column (DataGridView dgv, int[] col)
    {
        try
        {
            foreach (DataGridViewColumn x in dgv.Columns)
            {
                if (col.Contains(dgv.Columns.IndexOf(x)) && (bool)x.Tag == false)
                {
                    x.Visible = false;
                }
            }
            return true;
        }
        catch
        {
            return false;
        }
    }

set_never_hide_column 使用Tag propety来设置列是否可隐藏。此代码将基于列索引。

所以,例如,如果我调用 set_never_hide_column(your_dgv,new int [] {0}) set_hide_column(your_dgv,new int [] {0,2}} ,只隐藏第三列。