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