2015-11-03 50 views
1

我在Windows窗体上创建动态对象,到目前为止,我已经设法动态地创建对象,如标签和单选按钮。但是,现在我正在努力处理事件处理。我知道,我必须使用AddressHandler,厂址(你可以从下面的代码中看到)在vb.net中动态创建对象的事件处理

Private Sub btnCreate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreate.Click 

    Dim i As Integer 
    Dim radi As RadioButton 
    For i = 1 To 4 
     radi = New RadioButton 
     radi.Location = New System.Drawing.Point(j, n) 
     n = n + 60 
     radi.Text = List(i) 
     radi.Name = "rad" & i 

     Me.Controls.Add(radi) 
     AddHandler radi.CheckedChanged, AddressOf Me.RadioButton_Checked 
    Next 

End Sub 
Private Sub RadioButton_Checked(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    If TypeOf sender Is RadioButton Then 

    End If 
    End If 
End Sub 

我需要的代码输出的情况下一个消息框,用户选择从单选框特定的选项。例如,如果他们选择“真”,msgbox应该弹出。

有人可以给我一些指导,仅仅让代码认识到用户已经选择了单选按钮并且识别单选按钮的文本,例如“真”,“错”等。

在此先感谢。

如果您需要任何更多的澄清只是问。

+1

'TypeOf运算sender'总是将是'RadioButton'一个单选按钮点击事件 - 你需要投'sender'获得其属性。查看文本或在Tag属性中存储一些东西 – Plutonix

+0

Plutonix尽管发送与发件人相同的对象是最佳做法,但第一部分并不总是正确。在某些情况下可能会有所不同。不是在这种情况下。当然是因为他直接使用单选按钮类。 – Behrooz

回答

1

尝试铸造发件人:

With DirectCast(sender, RadioButton) 
    If .Checked Then 
    'Do Something 
    End If 
End With 
+0

这是否允许在做某事之前检测单选按钮的名称 – User59

+0

@ M.Hasan您可以访问With Block中的所有控件的属性和方法。 – LarsTech

+0

不好意思的问题,我相信你可以猜到我是一个noob。谢谢。 – User59

1

可以使用Tag属性,并将其设置为某个值,可以帮助您识别与后来的控制。

radi.Tag = 1 

然后

Dim radi as RadioButton = CType(sender, RadioButton) 
if radi.Tag = 1 Then 

End If 
+0

你的建议也被证明是有帮助的。谢谢。 – User59

相关问题