none
新手.最近使用vb2010exp的做串口通信时候出现疑问 RRS feed

  • 问题

  • 这段代码是通过COmbobox选择com口,运行就会出现如下所示的错误。

    而且如果去掉if语句中的else部分,则可以编译通过。

    已确定代码其他部分没有问题。

    在 System.Windows.Forms.AxHost.InvalidActiveXStateException 中第一次偶然出现的“AxInterop.MSCommLib.dll”类型的异常

    Public Sub ComboComSel_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboComSel.SelectedIndexChanged
            Dim aaa As String
            aaa = ComboComSel.SelectedIndex.ToString
    
            If aaa = "COM1" Then
                MSComm.CommPort = 1
                'ElseIf aaa = "COM2" Then
                '    MSComm.CommPort = 2
                'ElseIf aaa = "COM3" Then
                '    MSComm.CommPort = 3
                'ElseIf aaa = "COM4" Then
                '    MSComm.CommPort = 4
            Else
                MSComm.CommPort = 1
            End If
    
        End Sub


    2014年7月16日 1:26

答案

  • aaa = ComboComSel.SelectedIndex.ToString

    这只是把combobox当前选择的索引号转换成文本而已,判断时只会执行else..

    其次这个异常出现大部分原因是因为没有对NEW的对象进行初始化.问题是出在MSComm这里而不是判断,因为判断永远都会是ELSE
    2014年7月16日 11:56

全部回复

  • aaa = ComboComSel.SelectedIndex.ToString

    这只是把combobox当前选择的索引号转换成文本而已,判断时只会执行else..

    其次这个异常出现大部分原因是因为没有对NEW的对象进行初始化.问题是出在MSComm这里而不是判断,因为判断永远都会是ELSE
    2014年7月16日 11:56
  • 请问,那应该怎么改程序呢?我用下面这个语句,编译也不能通过 MSComm.CommPort = ComboComSel.SelectedIndex + 1 谢谢
    2014年7月31日 3:53
  • 请问,那应该怎么改程序呢?我用下面这个语句,编译也不能通过 MSComm.CommPort = ComboComSel.SelectedIndex + 1 谢谢

    你还是犯的同样的错误,ComboComSel.SelectedIndex + 1 这只会返回你选择的索引加1, 简单来说就是数字而已。

    对于你要设置的port, 应该是字符串吧?

    那你是不是存储在combobox上了? 为什么不设置成 selectedText 呢?


    remember make the reply as answer and vote the reply as helpful if it helps.

    2014年8月1日 6:10