单选按钮在表单加载时在VB网络中激活

时间:2017-11-21 11:10:37

标签: vb.net

我有一个简单的VB网络表单,组框中有两个单选按钮,组框外面有一个按钮,可以调用另一个设置其他参数的表单。单选按钮都通过串行端口发送数据。 Form1_load事件具有布尔值form_loading = True。这在rbtn处理程序中检查,如果为true则应退出子例程。在调试时,检查更改甚至触发在设计时检查的一个按钮的事件,此时form_loading值设置为false,我不知道为什么。没有form_loading = false声明。如果我删除了rbtn处理程序,则在调用并返回另一个表单时,form_loading = True会一直存在。当表单加载并且form_loading值设置为false时,带有按钮的组框被激活,因为它看到rbtn1-CheckChanged。我怀疑rbtn事件在表单开始加载时触发,在达到form_loading = True语句之前,但是如何阻止它触发按钮事件? 就其而言,当调试开始时,存在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`

1 个答案:

答案 0 :(得分:0)

感谢大家的帮助。在其他地方我发现了这个提示:删除"处理rbtnDon checkchanged"从子:

Private Sub rbtnDon_CheckedChanged(sender As Object,e As EventArgs)处理rbtnDon checkchanged

并将其添加到form1_load子目录:

AddHandler rbtnDon.CheckedChanged,New EventHandler(AddressOf 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时才开始出现问题,之后在form1启动之前触发了rbtnDon事件。  我确实尝试了Sub New()方法但是我只是在调试时得到一个小的空白表单。向其添加Form1_load会导致" NotImplemented Exception"。

上面介绍的方法似乎还可以,添加起来相当简单,但这可能不是一个好习惯吗?