积极答复者
新手.最近使用vb2010exp的做串口通信时候出现疑问

问题
-
这段代码是通过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
答案
-
aaa = ComboComSel.SelectedIndex.ToString
这只是把combobox当前选择的索引号转换成文本而已,判断时只会执行else..
其次这个异常出现大部分原因是因为没有对NEW的对象进行初始化.问题是出在MSComm这里而不是判断,因为判断永远都会是ELSE- 已编辑 vb_lovesan 2014年7月16日 12:01
- 已建议为答案 Carl CaiModerator 2014年7月17日 1:57
- 已标记为答案 Carl CaiModerator 2014年7月22日 8:51
全部回复
-
aaa = ComboComSel.SelectedIndex.ToString
这只是把combobox当前选择的索引号转换成文本而已,判断时只会执行else..
其次这个异常出现大部分原因是因为没有对NEW的对象进行初始化.问题是出在MSComm这里而不是判断,因为判断永远都会是ELSE- 已编辑 vb_lovesan 2014年7月16日 12:01
- 已建议为答案 Carl CaiModerator 2014年7月17日 1:57
- 已标记为答案 Carl CaiModerator 2014年7月22日 8:51
-
请问,那应该怎么改程序呢?我用下面这个语句,编译也不能通过 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.