【发布时间】:2018-10-29 13:52:27
【问题描述】:
我正在使用 C#,我需要一些帮助。我有 DataGridView,我想根据 CheckedListBox 中的用户选择来过滤(显示/隐藏列)。 在 CheckedListBox 中,我列出了一些项目,它们是 DataGridView 中的列名称: 默认情况下,所有这些列都是隐藏的。 CheckedListBox items
现在如果用户选择 THERMAL,我想在 DataGridView 中显示 THERMAL 列。如果用户取消选择 THERMAL,我想在 DataGridView 中隐藏 THERMAL 列。如果用户选择/取消选择多个项目,我想在 DataGridView 中显示/隐藏所有这些项目。我希望这是有道理的。
这是我的代码:
private void CLB_SHOW_HIDE_SelectedIndexChanged(object sender, EventArgs e)
{
string col = "";
for (int i = 0; i < CLB_SHOW_HIDE.CheckedItems.Count; i++)
{
if (col == "")
{
col = CLB_SHOW_HIDE.GetItemText(CLB_SHOW_HIDE.CheckedItems[i]);
this.DGV_FEATURE.Columns[col].Visible = true;
}
else
{
col += ", " + CLB_SHOW_HIDE.GetItemText(CLB_SHOW_HIDE.CheckedItems[i]);
this.DGV_FEATURE.Columns[col].Visible = false;
}
}
}
这是问题所在...如果我删除 else 语句,我只能从下往上正确显示所有列(见上图)。如果我从上到下,只会显示第一项。然后我必须取消选择该项目并选择另一个项目才能显示。
如果我在上面的代码中添加 else 语句,我会得到这个 Error
谁能解释一下这个问题?
【问题讨论】:
-
在你的 else 块中
col += ", " +没有意义。为什么要连接列名,然后使用它在 DataGridView 中查找列 -
True...这没有意义..我应该专注于代码的第一部分以在选择时显示列并且使用我的代码,仅当我从下往上而不是其他方式时才有效周围?
标签: c# winforms datagridview checkedlistbox datagridviewcolumn