Я новичок в vb.net, у меня есть приложение для сбора данных, которое использует данные сканирования на складе. это оконная система, я не мог получить работу обработки событий. Пожалуйста, помогите мне найти, что не так с моей программой ниже.vb.net обработчик события не работает
Вот проект. В приложении у меня есть класс сканера, который я использую для сканирования штрих-кода, а при сканировании происходит событие, позволяющее узнать формы. многие формы могут использовать данные сканирования. Но только вид, видимый сверху, будет обрабатывать отсканированные данные. У меня есть форма бланков форм и форма билета, они оба обрабатывают событие скандаты. Форма первого заказа обрабатывает событие сканирования данных и заполняет текстовое поле сканированного заказа, затем автоматически запускает форму билета, и форма билета предполагает обработку события данных сканирования и отправку данных в форме билета. Форма заказа обрабатывает событие в порядке, проблема заключается в том, что после запуска формы билета автоматически, похоже, не может ассоциироваться с событием, событие все еще похоже на формы заказа. Таким образом, форма билета не показывает его и ничего не делает. Мне нужно использовать LaunchTickets() в форме заказа, чтобы добраться до билета из-за бизнес-запроса. Как реализовать это, чтобы связать событие с правильной формой независимо от формы, видимой сверху в моем приложении? Я не знаю, есть ли способ обойти, если нет, каков наилучший способ реализовать это? пожалуйста, помогите мне получить эту работу.
Public Class ClsComPort
Public Shared Event NewScanData(ByVal ScanData As String)
Public Function InitializebcrScanner() As Boolean
AddHandler mySerialPort.DataReceived, AddressOf mySerialPort_DataReceived
End Function
Private Sub mySerialPort_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)
'omitted steps to get the scanned data
ScanData = str.Trim()
RaiseEvent NewScanData(scandata) 'raise the scan event
End sub end class
Public Class frmOrder
Friend WithEvents scanner As New ClsComPort
Private Sub GetScanData(ByVal ScanData As String) Handles scanner.NewScanData
txtOrder.Text = ScanData 'this runs ok, I got the scan data in this field
LaunchTickets() 'App automatically go to next form- ticket form, this seems to cause the event handling issue
End Sub
Private Sub LaunchTickets()
Me.Visible = False
frmTickets.WindowState = FormWindowState.Maximized
frmTickets.ShowDialog()
Me.Visible = True
End Sub
End Class
Public Class frmticket
Friend WithEvents scanner As New ClsComPort
Private Sub GetScanData(ByVal ScanData As String) Handles scanner.NewScanData
txtTicket.Text = ScanData
'not working, just nothing happen, and when back to order form, program crashed
End Sub
End Class
Вы, возможно, потребуется инициализировать скорость передачи данных, размер слова, и четность. – xpda
Я не вижу, где инициализируется 'str'. Вы не используете параметр 'e' из события' dataReceived'. – OneFineDay