C# 当您使DataGrid Windows窗体C不可编辑时,为什么复选框列停止工作,帮助?

C# 当您使DataGrid Windows窗体C不可编辑时,为什么复选框列停止工作,帮助?,c#,.net,winforms,visual-studio,C#,.net,Winforms,Visual Studio,您好,我在Windows Forms C#中有一个数据网格,我在其中放置了一列复选框,对于多次删除,我在该数据网格上有一个事件,如果我双击其行,它会打开一个弹出窗口,其中包含该行的所有详细信息,问题是,网格是可编辑的,如果我们双击,有时它会进入编辑模式,并开始闪烁光标进行编辑,但如果我使网格不可编辑,复选框根本不起作用,这是相当愚蠢的,我找不到任何函数,我可以使复选框列可编辑,使静止网格不可编辑,有可能解决这个问题吗?我根本不希望网格处于编辑模式,因为我有一个不同的编辑表单,我不能使用它,因为它


您好,我在Windows Forms C#中有一个数据网格,我在其中放置了一列复选框,对于多次删除,我在该数据网格上有一个事件,如果我双击其行,它会打开一个弹出窗口,其中包含该行的所有详细信息,问题是,网格是可编辑的,如果我们双击,有时它会进入编辑模式,并开始闪烁光标进行编辑,但如果我使网格不可编辑,复选框根本不起作用,这是相当愚蠢的,我找不到任何函数,我可以使复选框列可编辑,使静止网格不可编辑,有可能解决这个问题吗?我根本不希望网格处于编辑模式,因为我有一个不同的编辑表单,我不能使用它,因为它有不同类型的不同字段。附上一个小样本。提前感谢。

只需自己设置每列的属性,并将复选框列之外的所有内容设置为只读即可。
您可以直接从设计器中执行此操作。如果单击网格,应该有一个“编辑列”命令。设置列的过程应该是直接的。如果找不到方向,请再次询问。

只需自己设置每列的属性,并将除复选框列之外的所有内容设置为只读即可。
您可以直接从设计器中执行此操作。如果单击网格,应该有一个“编辑列”命令。设置列的过程应该是直接的。如果找不到方向,请再次询问。

另一种方法是将整个datagridview设置为只读,使用CellMouseClick事件,检查用户是否单击了包含复选框的单元格,如果是,则以编程方式切换复选框:

    private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {
        DataGridViewCell cell = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
        if (e.ColumnIndex != 2) return; // if column 2 contains checkbox
        bool check = (bool)cell.Value;
        cell.Value = !check;
    }
这实际上更容易(在FormLoad事件中):


另一种方法是使整个datagridview为只读,使用CellMouseClick事件并检查用户是否单击了包含复选框的单元格,如果是,则以编程方式切换复选框:

    private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {
        DataGridViewCell cell = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
        if (e.ColumnIndex != 2) return; // if column 2 contains checkbox
        bool check = (bool)cell.Value;
        cell.Value = !check;
    }
这实际上更容易(在FormLoad事件中):


我可以将我的datagrid readonly设置为true,将just checkbox列设置为false?你可以自己编写一个脚本来生成列的代码,但在40列时,我会问自己这是否确实需要或信息过量-也许你可以将删除掩码设置得更小,或者你可以使用网格的多选功能而不是复选框?我是否可以将我的datagrid readonly设置为true,将just checkbox列设置为false?您可以自己编写一个脚本来生成列的代码,但在40列时,我会问自己这是否确实需要,或者信息是否过量-也许您可以将删除掩码设置得更小,或者您可以使用网格的多选功能,而不是复选框?谢谢,你的问题对我很有帮助。谢谢,你的问题对我很有帮助。