2015-09-23 136 views
1

我在运行Visual Studio 2015年如何动态地更改复选框检查状态

我试图动态地改变使用Me.Controls...CheckState = CheckState.Unchecked动态创建的复选框的CheckState属性的社区版本,但我得到一个编译时错误,说CheckState不是控件的成员。

我在下面显示了用于创建复选框的代码,在底部显示了我试图用来更改值的代码。我会很感激任何建议。

 cbPDF.Location = New Point(710, tvposition) 
    cbPDF.Size = New Size(80, 20) 
    cbPDF.Name = "cbPDF" + panposition.ToString 
    cbPDF.Text = "PDF Conv" 
    cbPDF.CheckState = CheckState.Unchecked 
    Controls.Add(cbPDF) 
    AddHandler cbPDF.CheckedChanged, AddressOf Me.CommonCheck 
    arrTextVals(10, panposition) = "cbPDF" + panposition.ToString 
    arrTextVals(11, panposition) = "unchecked" 

    If arrTextVals(11, bottomLine) = "unchecked" Then 
     Me.Controls(arrTextVals(10, bottomLine)).CheckState = CheckState.Unchecked 
    Else 
     Me.Controls(arrTextVals(10, bottomLine)).CheckState = CheckState.Checked 
    End If 
+1

控制是基类,像它说,它没有该成员。将其转换为CheckBox然后调用它。 – OneFineDay

回答

1

这一行试图设置一个没有该属性的通用控制对象的CheckState。

Me.Controls(arrTextVals(10, bottomLine)).CheckState = CheckState.Unchecked

你需要将其转换为一个复选框以设置该属性(你需要确保它实际上是一个复选框或这将产生一个运行时错误):

DirectCast(Me.Controls(arrTextVals(10, bottomLine)), CheckBox).CheckState = CheckState.Unchecked

或长手以方便您阅读:

Dim ctl As Control = Me.Controls(arrTextVals(10, bottomLine)) 
Dim chk As CheckBox = DirectCast(ctl, CheckBox) 
chk.CheckState = CheckState.Unchecked 
+1

马特 - 感谢您的解释和代码。它完美的作品。 –