无线电按钮在形式负载下以VB网的形式开火



我有一个简单的vb net表单,在组框和组框外面有两个无线电按钮,该按钮调用另一个设置其他参数的表单。无线电按钮都通过串行端口发送数据。Form1_load事件具有布尔值form_loading = True。这将在RBTN处理程序中检查,如果为true,则应退出子例程。在调试中,检查更改甚至触发了一个按钮的事件,该事件在设计时检查,此时form_loading值设置为false,我不知道为什么。没有form_loading = false语句。如果我删除RBTN处理程序,则当调用另一个表单并返回时,form_loading = True持续存在。随着表单加载和form_loading值时,将带有按钮的组盒被激活,因为它看到了RBTN1-Checkchangy。我怀疑在达到form_loading = True语句之前,随着表单开始加载,RBTN事件正在发射,但是如何停止它启动按钮事件?如它的立场,当调试启动时,存在一个IO异常错误:

serialport已关闭,并且与按钮关联的代码在 发送到(封闭)com端口的缓冲区

Private Sub rbtnDon_CheckedChanged(sender As Object, e As EventArgs) Handles rbtnDon.CheckedChanged
    If form_loading Then
        Exit Sub
    ElseIf rbtnDoff.Checked = True Then 'event fires when other button checkchanged = true,  this stops it
        Exit Sub
    Else
        data_out = (SOT + "N" + EOT)
        SendtoBoard(data_out)
    End If
End Sub`enter code here`

感谢大家的帮助。在其他地方,我发现了此提示:从子里删除" rbtndon checkchanged"的" rbtndon checkchanged":

私有子rbtndon_checkedchanged(作为对象,e EvensArgs)处理rbtndon checkchanged

并将其添加到form1_load sub:

Addhandler rbtndon.CheckedChanged,new EventHandler(rbtndon_checkedchanged的地址)

似乎已经完全解决了问题。

我无法在我的原始帖子上添加启动代码,因为由于某种原因,该框将不接受两个单独的代码 - 或者我不正确这样做:它在这里:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    For i As Integer = 0 To My.Computer.Ports.SerialPortNames.Count - 1
        ccbComPort.Items.Add(My.Computer.Ports.SerialPortNames(i))
    Next
    If ccbComPort.Items Is Nothing Then
        lblMessage.ForeColor = Color.Red
        lblMessage.Text = "No Serial Ports found"
    Else
        ccbComPort.Text = My.Settings.oldPort
    End If
    ccbBaudrate.Text = My.Settings.oldBaud
    pnlComPorts.Visible = True
    'form_loading = True
    rbtnDon.Enabled = True
    AddHandler rbtnDon.CheckedChanged, New EventHandler(AddressOf rbtnDon_CheckedChanged)
End Sub

最初,我有一个表格,其中有一个用于COM端口设置的面板,一切都很好,只有在我将端口设置为Form2时才开始,此后rbtndon事件在form1启动之前就发射了。 我确实尝试了sub new()方法,但后来我在调试中获得了一个小空白。将Form1_load添加到IT中会导致"通知异常"。

上面描述的方法似乎还可以添加相当简单,但也许不是很好的做法?

最新更新