添加单选按钮到Windows窗体数据网格控件

时间:2012-11-21 08:35:32

标签: c# winforms

enter image description here

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

1 个答案:

答案 0 :(得分:0)

这里有一个如何使复选框列作为RadioButtons。从你的图片你需要一行所有列作为RadioBUttons - >这更复杂,并且独立于如何将数据绑定到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
        }
    }
}