C# 使DataGridViewColumn不可隐藏
我正在我的winforms项目中使用C# 使DataGridViewColumn不可隐藏,c#,winforms,C#,Winforms,我正在我的winforms项目中使用DataGridView控件。 我需要允许用户编辑此控件:根据需要隐藏/显示列。 但是,有些特定列不允许用户隐藏。 我正在查看的所有属性,似乎没有人可以帮助我 如何使DataGridView列不可隐藏 编辑: 以下是我试图实现的全部要求: 用户可以右键单击DataGridView并获取新表单,该表单列出了带有复选框的所有列。所以他可以通过选中相对复选框来决定隐藏哪一列和保留哪一列。 我正在寻找不可隐藏列的标志或属性,以便可以将其从列出的(可编辑)列中删除 我不
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如果没有“硬编码”,您(和您的程序)如何知道哪些列应该是不可编辑的?您是否从变量、设置、配置文件等获取此信息。?