On Screen Keyboard mit Anzeige gedrückter Taste

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ThePlexian.

    On Screen Keyboard mit Anzeige gedrückter Taste

    Hallo,

    zunächst mal: ich weiß das es ähnliche Themen gibt, die geben mir aber keine Antwort auf eine Frage:

    Wie programmiere ich meine OSK so, dass es mir die gedrückten Tasten farblich markiert. ( Wie das osk.exe von Windows, der aber nur beim Drücken auf die STRG-Taste auf dem On Screen Keyboard die Taste STRG weiß markiert.

    Wie könnte Ich dass auf alle Tasten bezogen machen?
    Meine Idee ist es, das 10-Finger-Schreib-System für Anfänger zu erleichtern,da die gedrückten Tasten im Programm (Hoffentlich :) ) kurz angezeigt werden...

    Vielen Dank im Voraus!
    Du könntest einfach der ganzen Form KeyPreview = True geben und dann gibt es ein Event das heißt KeyDown mit dem musst du alle möglichen Tasten behandeln und darauf reagieren
    also in deinem Fall z.b. den Buchstaben Blau färben.
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.
    Meinst du ungefähr so:


    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. If PreviewKeyDownEventArgs = "Q" Then
    4. Button1.BackColor = Color.Aqua
    5. End If
    6. End Sub
    7. End Class


    Dann markiert er aber "PreviewKeyDownEventArgs" als einen Fehler..
    Nein. Du hast davon gesprochen das du auf der Tastatur eine Taste drücken willst und diese auf der Form z.b. leuchtet nehmen wir an jede Taste ist ein Button oder was auch immer.
    Das was du schreibst ist das Button_Click Event d.h. wenn du den Button auf der Form klickst. Kommt jetzt darauf an was du wirklich willst?

    Hier ist z.b. ein Beispiel wie man einen Taste abfragen kann Tasten Abfrage
    Man muss halt das gewünschte Event nehmen (KeyDown, KeyPress,....) Ich würde vielleicht auch alle Tasten per Select Case abfragen, oder eine Region mit allen Tasten erstellen.
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Snaptu“ ()

    Es klappt nicht ganz:

    VB.NET-Quellcode

    1. Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    2. If e.KeyCode = Keys.Q Then
    3. Button1.BackColor = Color.Aqua
    4. End If
    5. End Sub



    Jetzt markiert er die Q-Taste nur dann wenn man im Fenster ist und auf sie klickt.. :|
    mich werden jetzt wahrscheinlich die Profi's hier nicht gern haben aber ich würd mal die Aufgabe Nr.1 lösen und das ist der Tastendruck also:

    VB.NET-Quellcode

    1. Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
    2. Select Case e.KeyCode
    3. Case Keys.A
    4. btn_KeyA.BackColor = Color.Red
    5. Case Keys.B
    6. btn_KeyB.BackColor = Color.Red
    7. End Select
    8. End Sub
    9. Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp
    10. Select Case e.KeyCode
    11. Case Keys.A
    12. btn_KeyA.BackColor = SystemColors.ButtonFace
    13. btn_KeyA.UseVisualStyleBackColor = True
    14. Case Keys.B
    15. btn_KeyB.BackColor = SystemColors.ButtonFace
    16. btn_KeyB.UseVisualStyleBackColor = True
    17. End Select
    18. End Sub


    Es gibt sicher elegantere Lösungen, denn du musst dir vorstellen wenn du da alle Tasten reinpackst wird das ziemlich lang. Leider kenne ich noch keine andere Methode.
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.
    @Snaptu : Ein Dictionary<Keys, Button> machen, dann im KeyDown / KeyUp anhand des Keys den Button holen.
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Guten Morgen,

    jetzt bin ich aber selbst neugierig. Wenn ich bei MSDN nachsehe lese ich sowas hier Dim keys As New Dictionary(Of Keys, Control) wäre das so richtig oder verstehe ich das falsch?
    Muss ich dem Fall dann überhaupt mit Add das Dictionary befüllen? Das einzige was man dazu im Netz findet ist dies --> tuts4you.de/87-programmieren/c…-simulieren-spezialtasten
    Man müsste dann die Liste ja irgendwie so befüllen keys.Add(Keys.A, btn_KeyA)?
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Snaptu“ ()