Abbruch Endlosschleife durch Tastendruck

Fireball1982

Mitglied
Hallo,
ich möchte in meinem Programm eine Endlosschleife durch Tastendruck beenden bisher sieht mein Code so aus:

Dim keydata As Keys
ProcessDialogKey(keydata)
Do Until keydata = Keys.Enter
ListBox2.Items.Add("TEST")
Loop

Aber es funktioniert nicht , kann mir jemande von euch helfen?
Ist das mit dem Tastenereignis richtig implementiert?
Danke
 
also in deiner schleife kann er es eigentlich nicht abbrechen. er ist ganze zeit in der schleife und fragt Do Until keydata = Keys.Enter ab.
d.h. keydata kann niemals Keys.Enter werden, weil in deiner Schleife nichts passiert, was keydata ändern könnte.

also entweder machst du dir einen thread mit globaler variable, die dann von einem event geändert werden kann, oder du nimmst die Funktion DoEvents, die, wenn sie aufgerufen wird alle anstehende Events abarbeitet und dann erst in der schleife weitermacht.

also als beispiel:

dim i as integer = 0

do while i <> 1
'diese schleife wird nie verändert, da i immer 0.
loop

also

do while m_i <> 1
'diese schleife wird nie verändert, da i immer 1.
DoEvents
if m_i = 1 then exit do
loop



sub keyevent
wenn keystate = enter dann setze m_i auf 1
end sub

hoffe das war verständlich :suspekt:


PS: DoEvents liegt irgendwo weit verschachtelt in einem NameSpace den ich vergessen hab. also :google: oder in msdn :google:


:)
 
NRFi hat gesagt.:
PS: DoEvents liegt irgendwo weit verschachtelt in einem NameSpace den ich vergessen hab. also :google: oder in msdn :google:


:)

Wie wäre es mit Application.DoEvents, so tief ist das nun wirklich nicht versteckt :)

Gruß
Jens
 
Funktioniert doch noch nicht ganz einwandfrei.
In der Endlosschleife rufe ich einen Prozess auf, der im Hintergrund Auswertungen vornehmen soll, solange bis ich Return drücke.
Drücke ich Return, so komm ich komm ich zwar aus der Endlosschleife raus, aber der Prozess läuft weiter.
 
Das mit dem Abbruch durch return funktioniert noch net so ganz, habs jetzt mal so implementiert:

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Do While abbruch <> 1
Application.DoEvents()
ListBox2.Items.Add("test")

If abbruch = 1 Then
Exit Do
End If
Loop
End Sub

Sub keyevent()
Dim keydata As Keys
If keydata = Keys.Enter Then abbruch = 1
End Sub
 

Neue Beiträge

Zurück