wie man eine Funktion/sub, nach dem laden des Formular-Fenster in VB?
Ich habe eine Funktion, bekommt der Benutzer-ID von USB-Lesegerät für Badges, verwendet, um sich in einer Anwendung.
wenn ich die app starte, die log-in-Fenster erscheint nicht, bis ich wischen Sie über den tag.
Ich muss wissen, ob es möglich ist das laden des windows, dann für den start der Funktion, der bekommt die Daten vom USB.
Dank 🙂
Private Sub SerialPort1_DataReceived()
'Threading.Thread.SpinWait(1000)
OpenPort()
If SerialPort1.IsOpen() Then
byteEnd = SerialPort1.NewLine.ToCharArray
'read entire string until .Newline
readBuffer = SerialPort1.ReadLine()
readBuffer = readBuffer.Remove(0, 1)
readBuffer = readBuffer.Remove(8, 1)
WWIDTextBox.AppendText(readBuffer)
End If
End Sub
Private Sub Form1_Activated(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MyBase.Activated
SerialPort1_DataReceived()
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'SerialPort1_DataReceived()
End Sub
Wollen Sie zum sperren von Benutzereingaben auf die form, bis er berührt wird, oder wollen Sie die Formular-Eingaben zu übernehmen? Vermutlich werden Sie den Aufruf einer blockierenden (synchronen) - Methode zum Lesen der Abzeichen. Hat die API für die badge-Leser bieten eine entsprechende asynchrone Methode?
InformationsquelleAutor user2234234 | 2013-04-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass Sie anrufen, die
ReadLine
- Methode, die eine blockierende (synchrone) - Methode. In anderen Worten, wenn Sie es aufrufen, gibt die Methode keinen Wert, bis der Wert, der zurückgegeben wird. Weil das so ist, es hält die Ausführung auf den aktuellen thread, bis eine komplette Zeile gelesen wird (wenn der Button ist geklaut). Da sind Sie auf dem UI-thread, wenn Sie es nennen, wird es sperren Sie die Benutzeroberfläche, bis der Button ist geklaut.Anstelle von aufrufen Ihrer
SerialPort1_DataReceived
- Methode der UI-thread, die Sie tun können, die Arbeit aus einem anderen thread. Der einfachste Weg das zu tun ist, ziehen Sie eineBackgroundWorker
- Komponente auf Ihr Formular im designer. Anschließend können Sie code hinzufügen, wie dies:Ich habe noch eine Frage, wie kann ich "neu starten"? wenn ich log-in und log-out, dann kann ich nicht verwenden, das Lesegerät für Badges wieder!
Sagen Sie, dass ein Neustart der Anwendung funktioniert, zeigt aber das login-Formular zweimal innerhalb des gleichen Prozesses nicht?
ja, aber nur, um klar zu stellen, ich bin mit Hide() und Show () - Methoden zum öffnen und "schließen" - Fenster. mit Close() schließt die app.
Mit Der Anwendung.Restart() löst das problem.
InformationsquelleAutor Steven Doggart
Arbeiten auf VS2013, ich stieß auf das gleiche Problem, ich musste ein datagridview aktualisieren (Farben in der gridrows). Dieser arbeitete für mich.
InformationsquelleAutor Ivan Perez
Versuchen Form Aktiviert Veranstaltung
Aufruf der Funktion
After the Form Loads
...funktioniert immer noch nicht. es wartet, bis readUsbPort-timeout erreicht ist, dann zeigt das Formular-Fenster.
Können Sie uns einige code, der Sie probiert..?
Entfernen Sie den code
SerialPort1_DataReceived()
ausForm_Load
Ereignis und versuchen das gleiche...es hat nicht geholfen..
InformationsquelleAutor Pandian
InformationsquelleAutor user4368893