我在 winforms 项目中使用DataGridView
控件。
我要求允许用户编辑此控件:隐藏/显示他想要的列。
但是,有一些特定的列不允许用户隐藏。
我正在查看DataGridViewColumn的所有属性,似乎没有人可以帮助我。
如何使DataGridView
列无法隐藏?
修改
以下是我正在尝试实施的完整要求:
用户可以右键单击DataGridView
并获取新表单,其中列出了包含复选框的所有列。因此,他可以通过检查相对复选框来决定要隐藏哪个列以及要保留哪个列。
我正在为不可隐藏的列寻找标志或属性,因此我可以从列出的(可编辑的)列中删除它。
我不喜欢硬编码不可编辑的列,因为我必须在孔应用程序中进行相同的思考。我有大约10 DataGridView
。
答案 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}} ,只隐藏第三列。