C# 使DataGridViewColumn不可隐藏

C# 使DataGridViewColumn不可隐藏,c#,winforms,C#,Winforms,我正在我的winforms项目中使用DataGridView控件。 我需要允许用户编辑此控件:根据需要隐藏/显示列。 但是,有些特定列不允许用户隐藏。 我正在查看的所有属性,似乎没有人可以帮助我 如何使DataGridView列不可隐藏 编辑: 以下是我试图实现的全部要求: 用户可以右键单击DataGridView并获取新表单,该表单列出了带有复选框的所有列。所以他可以通过选中相对复选框来决定隐藏哪一列和保留哪一列。 我正在寻找不可隐藏列的标志或属性,以便可以将其从列出的(可编辑)列中删除 我不

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

如何使
DataGridView
列不可隐藏

编辑:

以下是我试图实现的全部要求:

用户可以右键单击
DataGridView
并获取新表单,该表单列出了带有复选框的所有列。所以他可以通过选中相对复选框来决定隐藏哪一列和保留哪一列。 我正在寻找不可隐藏列的标志或属性,以便可以将其从列出的(可编辑)列中删除


我不喜欢硬编码不可编辑的列,因为我必须做同样的跨孔思考应用程序。我有大约10个
DataGridView

就像@Christopher所说的,您可能有一个列数组被设置为隐藏,另一个列数组被设置为不允许隐藏。您还有许多DataGridView,我建议编写一些公共静态方法:

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使用标记属性设置列是否可隐藏。此代码将基于列索引工作


例如,如果我调用set_never_hide_列(你的_dgv,new int[]{0})和set_hide_列(你的_dgv,new int[]{0,2}),只有第三列会被隐藏。

奇怪的问题,就是不允许用户“编辑”该列。不管“编辑”是什么意思,它并不完全是水晶。@HansPassant我编辑了我的问题。我不喜欢硬编码“不可编辑”列,因为我有很多DataGridView要编辑configure@Mhd如果没有“硬编码”,您(和您的程序)如何知道哪些列应该是不可编辑的?您是否从变量、设置、配置文件等获取此信息。?