例如,如果我想在Datagridview中隐藏某些列标题。我将使用此代码:
dataGridView1.ColumnHeadersVisible = false;
但这会使所有列标题都不可见。现在,如果我只想隐藏某些列标题,那该怎么办呢。
例如,我有3个列标题。我只是希望第3列标题不可见而不隐藏数据属于该列的所有行。这可能吗?
如果我错了,请告知并纠正我。
答案 0 :(得分:1)
您需要处理DataGridView.CellPainting Event。
在事件处理程序中,您将获得DataGridViewCellPaintingEventArgs的实例。您可以使用此对象的ColumnIndex
和RowIndex
属性来确定是否正在绘制要隐藏的标题单元格。如果正在绘制的单元格是列标题,则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));