C# 将单选按钮添加到windows窗体datagrid控件

C# 将单选按钮添加到windows窗体datagrid控件,c#,winforms,C#,Winforms,我的windows窗体上有DataGrid,我正在运行时向DataGrid添加一行。我在DataGrid上有一个列,我需要在运行时向其中添加不同的UI控件(列的每个单元格将包含不同的UI控件,如下拉、复选框、超链接、单选按钮)。我可以添加除单选按钮控件之外的其他控件,如何将单选按钮添加到DataGrid列? 我用它不为我工作,因为它需要整个列作为单选按钮列 这里是一个如何使一列复选框作为单选按钮工作的示例。从图片中,您需要一行,所有列都作为单选按钮->这更复杂,并且与如何将数据绑定到datagr

我的windows窗体上有DataGrid,我正在运行时向DataGrid添加一行。我在DataGrid上有一个列,我需要在运行时向其中添加不同的UI控件(列的每个单元格将包含不同的UI控件,如下拉、复选框、超链接、单选按钮)。我可以添加除单选按钮控件之外的其他控件,如何将单选按钮添加到DataGrid列?
我用它不为我工作,因为它需要整个列作为单选按钮列

这里是一个如何使一列复选框作为单选按钮工作的示例。从图片中,您需要一行,所有列都作为单选按钮->这更复杂,并且与如何将数据绑定到datagridview无关。我更多地使用VB.NET,所以这里可能有一些语法错误

在datagridview中创建DataGridViewCheckBoxColumn列 在DataGridView的三个事件中,我的复选框列作为单选按钮工作

private Boolean bRbtnCurrentValue 
private Int32 iColumnRadioBtn = 4
private Datagridview dgv //Only for this exapmle

//In Event dgv_CellBeginEdit
{
    //Here we stored current value to variable
    if (this.dgv.CurrentCell.ColumnIndex = this.iColumnRadioBtn)
        this.bRbtnCurrentValue = this.dgv
}

//In Event dgv_CellEndEdit
{
    //Here we update if value changed
    Boolean bNewValue = this.dgv.CurrentCell.Value
    if (this.dgv.CurrentCell.ColumnIndex = this.iColumnRadioBtn)
    {
        if(bNewValue=False)
            this.dgv.CurrentCell.Value=this.bRbtnCurrentValue
        else
            //Here jo actions when value changed(database update etc.)
    }   
}

//Event dgv_ CurrentCellDirtyStateChanged
{
    if(this.dgv.CurrentCell.ColumnIndex = this.iColumnRadioBtn) andalso (dgv.IsCurrentCellDirty = True)
    {
        foreach(DataGridViewRow dgvr In dgv.Rows)
        {
            If (dgvr.Index = dgv.CurrentRow.Index)
                If (dgv.CurrentCell.Value = True)
                    dgv.CancelEdit() //True to False cannot be changed
            else
                If (dgvr.Cells(dgv.CurrentCell.ColumnIndex).Value=True)
                    dgvr.Cells(dgv.CurrentCell.ColumnIndex).Value = False
        }
    }
}

使用它的目的是什么?Radiobutton用于在有几个选项时只选择一个。如果您只想在每行的基础上使用它,您应该使用复选框。如果只有一个选项可供选择,我建议使用复选框。我通过添加图像更新了问题,这是我在网格中需要的。正如您所说,我应该将DataGridViewCheckBoxColumn标记为ceate,但在我的应用程序列中也可以包含combo之类的控件,文本框和超链接。所以我不能添加DataGridViewCheckBoxColumn,我想向列的每个单元格添加不同的控件。