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