C# 有选择地禁用DataBound DataGridView中的行单元格
我需要能够基于布尔标志关闭行中的某些单元格。如果该标志为真,则所有内容都应启用,并像正常情况一样可见。如果标志为false,则我需要将行中的多个单元格设置为不可见和只读。您可以处理CellPaint事件,检查此处标志的状态,然后绘制要显示/隐藏的单元格 MSDN上的此链接可能在以下方面对您有所帮助:C# 有选择地禁用DataBound DataGridView中的行单元格,c#,winforms,datagridview,C#,Winforms,Datagridview,我需要能够基于布尔标志关闭行中的某些单元格。如果该标志为真,则所有内容都应启用,并像正常情况一样可见。如果标志为false,则我需要将行中的多个单元格设置为不可见和只读。您可以处理CellPaint事件,检查此处标志的状态,然后绘制要显示/隐藏的单元格 MSDN上的此链接可能在以下方面对您有所帮助: 您可以处理单元格绘制事件,在那里检查标记的状态,然后绘制要显示/隐藏的单元格 MSDN上的此链接可能在以下方面对您有所帮助: 这是我的例子。为CellPaint添加事件处理程序,然后确定该项是否已禁
您可以处理单元格绘制事件,在那里检查标记的状态,然后绘制要显示/隐藏的单元格 MSDN上的此链接可能在以下方面对您有所帮助:
这是我的例子。为CellPaint添加事件处理程序,然后确定该项是否已禁用。如果已禁用,则只需绘制背景并使单元格为只读 我有一个绑定到数据网格的自定义类BoardStatusView,它有一个布尔函数,用于确定单元格是否应该有复选框(
Upgradeable()
)
这是我的例子。为CellPaint添加事件处理程序,然后确定该项是否已禁用。如果已禁用,则只需绘制背景并使单元格为只读 我有一个绑定到数据网格的自定义类BoardStatusView,它有一个布尔函数,用于确定单元格是否应该有复选框(
Upgradeable()
)
谢谢目前,我正在使用DataBindingComplete事件,将隐藏单元格设置为只读,并将所有颜色更改为SystemColors.Window。重写Paint事件还可以消除单元格边框,但由于我有几种不同的单元格类型,所以不能仅将示例代码用作完整的解决方案。目前,我想我会注意到这是一个选项,如果我在边境上受到阻碍的话。谢谢。目前,我正在使用DataBindingComplete事件,将隐藏单元格设置为只读,并将所有颜色更改为SystemColors.Window。重写Paint事件还可以消除单元格边框,但由于我有几种不同的单元格类型,所以不能仅将示例代码用作完整的解决方案。目前,我想我会注意到这是一个选项,如果我在边界上受到阻碍的话。
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;
}
}
}