我需要能够根据布尔标志关闭一行中的一些单元格。如果该标志为真,我应该启用所有内容并像往常一样可见。如果该标志为false,则我需要使该行中的几个单元格不可见且只读。
答案 0 :(得分:1)
您可以处理CellPainting事件,检查那里的标志状态,然后绘制要显示/隐藏的单元格。
MSDN上的这个链接可以帮助您:
答案 1 :(得分:0)
这是我的例子。为CellPainting添加事件处理程序,然后确定该项是否已禁用。如果它被禁用,那么只需绘制背景并使单元格为只读。
我有一个绑定到数据网格的自定义类BoardStatusView,它有一个布尔函数,用于确定单元格是否应该有一个复选框(Upgradeable()
)
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex >= 0)
{
BoardStatusView bs = dataGridView1.Rows[e.RowIndex].DataBoundItem as BoardStatusView;
bool disabled = !bs.Upgradeable();
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly = disabled;
if (disabled && e.ColumnIndex == 0)
{
e.PaintBackground(e.ClipBounds, false);
e.Handled = true;
}
}
}