Alle Tasten während einer Form, außer Buchstaben, Shift, Zahlen, sperren

  • VB.NET

Es gibt 48 Antworten in diesem Thema. Der letzte Beitrag () ist von hal2000.

    hal2000 schrieb:

    Wenn du noch das KeyDown-Ereignis behandelst, findest du in e die Eigenschaft "Modifiers", welche eine bitweise Or-Kombination der gerade gedrückten Zustandstasten (Strg, Shift, Alt) enthält. Mit KeyData kannst du außerdem alle anderen Tasten abfangen, die du in KeyPress zwangsläufig auslassen musstest, z.B. Entf, F1-F12, Backspace, usw. .

    Ich verstehe das nicht ganz. Was muss ich genau machen. Wie meinst du das mit in der "e" Eigenschaft? Ich find bei der Form Eigenschaft kein "Modifiers".
    Push... Brauche es dringend...
    Habe bereits geschafft ALT+F4 und den Taskmanager zu deaktivieren. Wie kann man dann allgemein ein Key deaktivieren?
    Man muss doch irgendwie schaffen, die Tasten Strg, Alt Gr, Alt, Strg(R), LWinTaste, RWinTaste zu deaktivieren!

    Bitte helft mir.
    HAL2000 hat Dir gesagt Du sollst das KeyDown Ereignis abfangen, wie war das noch ?

    Kangaroo schrieb:

    Wenn Du Deinen Eventhandler so nicht programmieren kannst, dann überlass es der IDE: in dem Code-Fenster oben links z.B. die Form-Ereignisse anklicken und dann rechts das entsprechende Event.


    Dies event wird auch von den Tasten SHIFT,ALT,CTRL ausgelöst, Du kannst sehen was passiert wenn Du mal folgendes in Dein KeyDown-Event einfügst:

    VB.NET-Quellcode

    1. Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    2. Debug.Print("Modifier: " & e.Modifiers.ToString)
    3. Debug.Print("KeyData: " & e.KeyData.ToString)
    4. Debug.Print("SHIFT: " & e.Shift)
    5. Debug.Print("ALT: " & e.Alt)
    6. Debug.Print("CTRL: " & e.Control)
    7. End Sub

    Kangaroo schrieb:

    HAL2000 hat Dir gesagt Du sollst das KeyDown Ereignis abfangen, wie war das noch ?

    Kangaroo schrieb:

    Wenn Du Deinen Eventhandler so nicht programmieren kannst, dann überlass es der IDE: in dem Code-Fenster oben links z.B. die Form-Ereignisse anklicken und dann rechts das entsprechende Event.


    Dies event wird auch von den Tasten SHIFT,ALT,CTRL ausgelöst, Du kannst sehen was passiert wenn Du mal folgendes in Dein KeyDown-Event einfügst:

    VB.NET-Quellcode

    1. Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    2. Debug.Print("Modifier: " & e.Modifiers.ToString)
    3. Debug.Print("KeyData: " & e.KeyData.ToString)
    4. Debug.Print("SHIFT: " & e.Shift)
    5. Debug.Print("ALT: " & e.Alt)
    6. Debug.Print("CTRL: " & e.Control)
    7. End Sub

    Ok, jetzt habe ich es halbwegs verstanden.
    Nun habe ich deinen Code meinem Script hinzugefügt, aber wenn ich dann die entsprechenden Tasten(Shift, Alt, CTRL) drücke, passiert rein gar nichts.

    Kangaroo schrieb:

    Keydown Event mit IDE angelegt ?

    Die Form muss Focus haben, sonst läuft auch nichts ...


    Ich erwähne es noch einmal: Ich bin noch ein Newbie. Habe gestern erst richtig angefangen mit dem Programm zu arbeiten.

    Das ist doch ein Event oder nicht?

    VB.NET-Quellcode

    1. Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    2. Debug.Print("Modifier: " & e.Modifiers.ToString)
    3. Debug.Print("KeyData: " & e.KeyData.ToString)
    4. Debug.Print("SHIFT: " & e.Shift)
    5. Debug.Print("ALT: " & e.Alt)
    6. Debug.Print("CTRL: " & e.Control)
    7. End Sub


    Also das ist das, was du gepostet hast.

    Was ist denn ein Focus? Wie kann man es auf Focus umstellen?
    ja, alle Functionen mit "handles" hinten behandeln ein Event
    eine Form hat "Focus" wenn sie Tastendrücke empfängt: klich auf Deine Form, dann wird oben die Titelleiste dunkel

    Oder Du hast die Kompilierung auf "Release" stehen (in der Leiste der IDE oben Mitte), stell die mal auf "Debug" um, sonst zeigt Debug.Print nichts an.
    In der "Standard-Symbolleiste", bei mir direkt unter "Hilfe".

    Man kann die Kompilierung auch in den Projekteigenschaften ändern:
    - Menüpunkt Projekt öffnen
    - Projekteigenschaften (fast ganz unten) öffnen
    - auf der neuen Seite unter Konfiguration (oben links) "Debug" auswählen
    Ach, der Code funktioniert ausgezeichnet, nur Du hast irgendwas falsch gemacht (KeyPreview mal wieder vergessen?). Hier mal der ganze Code zum üben:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    3. Debug.Print("Modifier" & e.Modifiers.ToString)
    4. Debug.Print("KeyData" & e.KeyData.ToString)
    5. Debug.Print("SHIFT" & e.Shift)
    6. Debug.Print("ALT" & e.Shift)
    7. End Sub
    8. ' form load
    9. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    10. Me.KeyPreview = True
    11. End Sub
    12. End Class

    Kangaroo schrieb:

    Me.KeyPreview = True

    Kangaroo schrieb:

    Ach, der Code funktioniert ausgezeichnet, nur Du hast irgendwas falsch gemacht (KeyPreview mal wieder vergessen?). Hier mal der ganze Code zum üben:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    3. Debug.Print("Modifier" & e.Modifiers.ToString)
    4. Debug.Print("KeyData" & e.KeyData.ToString)
    5. Debug.Print("SHIFT" & e.Shift)
    6. Debug.Print("ALT" & e.Shift)
    7. End Sub
    8. ' form load
    9. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    10. Me.KeyPreview = True
    11. End Sub
    12. End Class

    KeyPreview ist auf True.

    Welche Tasten wolltest du mit dem Code eigentlich deaktivieren? Shift und Alt?

    Ich habe Me.KeyPreview = True trotzdem mal hinzugefügt und es klappt immer noch nicht.
    Ich deaktiviere mit dem Code garkeine Tasten: der Code zeigt Dir nur im Direktfenster unten an was in der e struktur steht wenn irgendeine Taste gedrückt wird.
    Irgendetwas solltest Du ja eventuell auch machen - nicht wahr ?

    Genau wie im anderen Beispiel kannst Du in diesem event e.handled=true setzen und der Tastendruck wird nicht ausgeführt. Soviel hätte aber mittlerweile klar sein müssen.
    lies ein buch ... das hier durchzulesen ist eine qual für mich (alle anderen .?) ... als programmierer sollte man bereit sein selber etwas zu schreiben und sich gedanken darüber machen, welchen sinn / inhalt die hilfen der anderen haben und nicht einfach Copy&Paste betreiben :thumbdown:
    Oh mein Gott. Ich will nix Copy & Paste machen. Das ist es ja gerade. Ich will lernen, wie man was mit welchem Code macht. Das nennt man nicht Copy & Paste.
    Ich guck mir die Codes an und scripte sie meinen Wünschen entsprechend!
    Nun gut, wenn ihr mir nicht helfen wollt, kann dies geschlossen werden!

    Außerdem kann man mich noch nicht Programmierer nennen... Ich habe gerade mal angefangen ein Programm zu schreiben, seit gestern!