动态创建SerialPort时正样定义方法SerialPort_DataReceived
------解决方案--------------------
Delegate Sub DataShow(ByVal SerialPortName As String, ByVal myString As String)
Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
Dim sp As New IO.Ports.SerialPort
AddHandler sp.DataReceived, AddressOf SerialPort_DataReceived
End Sub
Sub SerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)
Dim sp As IO.Ports.SerialPort = sender
Dim s As String = sp.ReadLine
Invoke(New DataShow(AddressOf SerialPort_DataShow), New Object() {sp.PortName, s}) '委托
End Sub
Private Sub SerialPort_DataShow(ByVal SerialPortName As String, ByVal myString As String)
Select Case SerialPortName '按串口号来显示数据
Case "COM1"
TextBox1.AppendText(myString)
Case "COM2"
'Add your code here
Case Else
'Add your code here
End Select
End Sub