VB6 Bug in Projekt mit 2 Textboxen und 5 Zeilen Code

27/05/2008 - 10:09 von Thomas | Report spam
Hallo,
ich habe ein kleines VB Projekt.
Form1 mit 2 Textboxen
Neue Form2 ohne alles
Im Text1_Validate folgenden Code:


Private Sub Text1_Validate(Cancel As Boolean)
Dim myForm As Form2
Set myForm = New Form2
myForm.Show vbModal
End Sub

Beim starten ist der Focus auf der TextBox1. Jetzt klicke ich mit der Maus
auf die Textbox2. Dann kommt die Form 2 hoch. Beim Schließen der Form 2 ist
die Textbox2 zwar markiert und hat den Focus, jedoch kann ich nichts darin
schreiben, ich muss diese erst noch einmal anklicken. Es kommt mir vor, als
wenn die Textbox meint, dass noch die Linke Mausstate der Maus gedrückt hat.

Ist das ein VB6 Bug
Hat jemand eine Idee was ich dagegen machen kann? (In Lost_Focus kann ich
meinen Code für die Form 2 leider nicht legen. Damit würde das Problem nicht
auftauchen.)
Kann man der Maus sagen, dass keine Taste mehr gedrückt ist?
Ich kann auch gerne das Projekt versenden!

Hat jemand eine Idee?
Bin für jede Info dankbar
Thomas
 

Lesen sie die antworten

#1 Thorsten Doerfler
27/05/2008 - 11:39 | Warnen spam
"Thomas" schrieb:

ich habe ein kleines VB Projekt.
Form1 mit 2 Textboxen
Neue Form2 ohne alles
Im Text1_Validate folgenden Code:


Private Sub Text1_Validate(Cancel As Boolean)
Dim myForm As Form2
Set myForm = New Form2
myForm.Show vbModal
End Sub

Beim starten ist der Focus auf der TextBox1. Jetzt klicke ich mit der Maus
auf die Textbox2. Dann kommt die Form 2 hoch. Beim Schließen der Form 2
ist
die Textbox2 zwar markiert und hat den Focus, jedoch kann ich nichts darin
schreiben, ich muss diese erst noch einmal anklicken. Es kommt mir vor,
als
wenn die Textbox meint, dass noch die Linke Mausstate der Maus gedrückt
hat.



Es ist immer problematisch, wenn modale Dialoge aus Fokus bzw.
Validierungs-Ereignissen heraus aufgerufen werden. Abhilfe schafft das
Entkoppeln dieser Aktion über einen Timer mit einem kleinen Interval von
250-500msec:

Private Sub Text1_Validate(Cancel As Boolean)
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Timer1.Enabled = False

Dim myForm As Form2
Set myForm = New Form2
myForm.Show vbModal
End Sub

Kann man der Maus sagen, dass keine Taste mehr gedrückt ist?



Die Maus weiß das bereits. ;-)

Thorsten Dörfler

Ähnliche fragen