在C#datagridview中隐藏某些列标题

时间:2014-05-16 02:58:14

标签: c# datagridview

例如,如果我想在Datagridview中隐藏某些列标题。我将使用此代码:

dataGridView1.ColumnHeadersVisible = false;

但这会使所有列标题都不可见。现在,如果我只想隐藏某些列标题,那该怎么办呢。

例如,我有3个列标题。我只是希望第3列标题不可见而不隐藏数据属于该列的所有行。这可能吗?

如果我错了,请告知并纠正我。

3 个答案:

答案 0 :(得分:1)

您需要处理DataGridView.CellPainting Event

在事件处理程序中,您将获得DataGridViewCellPaintingEventArgs的实例。您可以使用此对象的ColumnIndexRowIndex属性来确定是否正在绘制要隐藏的标题单元格。如果正在绘制的单元格是列标题,则RowIndex将为-1。

在绘制有问题的标题单元格时,除了e.Handled = true;之外什么都不做,这可能只是一件简单的事情。

答案 1 :(得分:1)

我发现这篇文章正在寻求有关类似问题的帮助。我使用以下命令从RowDataBound事件处理程序中隐藏了网格中的特定列(第5列以外的任何内容):

for (int i = 6; i<e.Row.Cells.Count; i++)
{
    e.Row.Cells[i].Visible = false;
}

...有效,但是这些列的所有标题仍然存在。我可以通过将以下行添加到循环中来解决该问题:

for (int i = 6; i<e.Row.Cells.Count; i++)
{
    e.Row.Cells[i].Visible = false;
    GridView1.HeaderRow.Cells[i].Visible = false;
}

现在,列和标题已同步。我对在事件处理程序中引用GridView1本身并不感到兴奋,因此,如果有人知道一种改进方法,请继续。

我删除了第5列之后的所有内容,但是您可以使用相同的概念来隐藏任何特定的列/标题。希望有帮助。

答案 2 :(得分:0)

只需将该列的HeaderText设置为空字符串。

示例:您想要隐藏第一个列标题:

view.setForeground(typedArray.getDrawable(0));