Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有选择地禁用DataBound DataGridView中的行单元格_C#_Winforms_Datagridview - Fatal编程技术网

C# 有选择地禁用DataBound DataGridView中的行单元格

C# 有选择地禁用DataBound DataGridView中的行单元格,c#,winforms,datagridview,C#,Winforms,Datagridview,我需要能够基于布尔标志关闭行中的某些单元格。如果该标志为真,则所有内容都应启用,并像正常情况一样可见。如果标志为false,则我需要将行中的多个单元格设置为不可见和只读。您可以处理CellPaint事件,检查此处标志的状态,然后绘制要显示/隐藏的单元格 MSDN上的此链接可能在以下方面对您有所帮助: 您可以处理单元格绘制事件,在那里检查标记的状态,然后绘制要显示/隐藏的单元格 MSDN上的此链接可能在以下方面对您有所帮助: 这是我的例子。为CellPaint添加事件处理程序,然后确定该项是否已禁

我需要能够基于布尔标志关闭行中的某些单元格。如果该标志为真,则所有内容都应启用,并像正常情况一样可见。如果标志为false,则我需要将行中的多个单元格设置为不可见和只读。

您可以处理CellPaint事件,检查此处标志的状态,然后绘制要显示/隐藏的单元格

MSDN上的此链接可能在以下方面对您有所帮助:


您可以处理单元格绘制事件,在那里检查标记的状态,然后绘制要显示/隐藏的单元格

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;
            }
        }
    }