3

在此处输入图像描述

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

4

1 回答 1

0

这里有一个如何使一列复选框作为单选按钮工作。从您的图片中,您需要一个所有列作为 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
        }
    }
}
于 2012-11-22T13:30:28.040 回答