Programm anhalten, und z.B. mit druck auf Space weiterlaufen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von mindanao.

    Programm anhalten, und z.B. mit druck auf Space weiterlaufen

    Hallo
    Ich suche heute schon den ganzen Tag nach einer Funktion WaitKey(), wie sie in fast jedem alten Basic zu finden ist.
    Aufrufen, Programm hält an, auf Taste drücken Prg läuft weiter. Ich habe einige Vorschläge gefunden, gelaufen ist aber nix.
    Hilfe den Nichtwissenden :thumbsup:
    Moin! :)
    Ich habe hier einen Code geschrieben, aber diese Lösung ist bestimmt KEINE Saubere!
    Schau dir den Code mal an.
    Ich möchte aber nochmals erwähnen, das dieser Code nicht optimal ist.
    Und ich auch gerne wissen möchte,wie man das Problem am besten löst!
    BIG THX

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    4. KeyPreview = True
    5. End Sub
    6. Dim stopp As Boolean = False
    7. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    8. Do
    9. Application.DoEvents()
    10. If stopp Then stopp = False : Exit Do
    11. Loop
    12. MsgBox("Hier gehts weiter!") ' <-- Hier weiter!
    13. End Sub
    14. Private Sub Form1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    15. If e.KeyCode = Keys.Space Then stopp = True
    16. End Sub
    17. End Class
    Visual Basic.NET 8o
    MS-SQL
    8o
    Hi
    der Vorschlag von Cheffboss ist nicht zu empfehlen. Application.DoEvents() gilt allgemein als unsauber, da es die Verarbeitung der Windows Messages nicht mehr sequenziell erfolgen lässt.

    Mein Vorschlag wäre, die KeyPreview-Eigenschaft der Form auf True zu setzen und Enabled für die Steuerelemente zu aktivieren (ich denke, dafür müssen sie in einem Panel sein, das du dann deaktivierst/reaktivierst, aber das weiß ich nicht mehr sicher. Im KeyDown-Ereignis des Fensters reaktivierst du dann das Fenster, sofern die entsprechende Taste gedrückt wurde.

    Viele Grüße
    ~blaze~
    @mindanao In einer Console-Anwendung geht genau das, wie Du es bescheibst.
    In einer WinForm-Anwendung lass eine MessageBox aufpoppen und feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Achso, wenn es sich um eine Konsolenanwendung handelt, kannst du auch folgendes Machen:

    VB.NET-Quellcode

    1. Console.WriteLine("Press space key to continue...")
    2. Dim k As ConsoleKeyInfo
    3. 'warten, bis Leertaste gedrückt wurde
    4. Do
    5. k = Console.ReadKey(True) 'Intercept auf True, sodass die Tasten nicht auf der Konsole ausgegeben werden
    6. Loop Until k.Key = ConsoleKeys.Spacebar
    7. 'Fortfahren


    Viele Grüße
    ~blaze~
    Hi Leute
    Danke an alle für die mühe.
    Da es nix für das eigentliche Programm ist, halte ich mich an RFG, ist tatsächlich die einfachste Lösung.
    Hilfe den Nichtwissenden :thumbsup: