Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Standard-Keys in Form abfangen? Return, Tab etc.
Samy1981
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

Standard-Keys in Form abfangen? Return, Tab etc.

beantworten | zitieren | melden

Hallo zusammen,

ich schreibe momentan eine Anwendung, die ich über 2 Numpads(USB Ziffernblock) steuere. Das ganze läuft im Prinzip dann so ab, das ich über RawInput nach einem Tastendruck rausfinde, von welchem Ziffernblock die Eingabe kam und welches Zeichen gedrückt wurde und entsprechend wird eine Aktion ausgeführt.Also drücke ich z.b. die "1" auf Ziffernblock 1 wird eine andere Aktion ausgeführt wie wenn ich die "1" auf Ziffernblick 2 drücke usw..

Mein Problem ist nun, das auf den Ziffernblöcken auch "Return" vorhanden ist, welche ich auch gerne differenziert nutzen möchte, das funktioniert ansich auch, nur wird auch das Standard-Return parallel zu meiner Aktion ausgeführt, also ist z.b. der Fokus auf irgendeinem Button, und ich drücke auf Ziffernblock 1 die Taste "Return", löst das meine Aktion XY aus, und gleichzeitig das Button-Event, auf dem der Fokus lag.

Mir fallen dazu mehrere theoretische Lösungen ein, ich weis allerdings nicht welche sich davon relativ einfach umsetzen lassen, vllt. könnt ihr mir dabei helfen:

1.Den Eingabe Fokus unveränderlich auf z.b. ein Textfeld zwingen, welches kein Event besitzt und somit bei drücken von Return einfach nichts macht.

-> relativ unschön und wie erzwinge ich ein dauerhaften Fokus auf ein Control?

2.Ich benötige die ursprüngliche Windows-"Return" Funktionalität in meinem Programm nicht, kann ich das irgendwie umschreiben, also das beim Drücken von Return zwar der Tastendruck erkannt wird, aber einfach nichts passiert?

Oder hat vieleicht jemand ne ganz andere Idee?

gruss und danke

Samy
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Samy1981,

wenn ich es richtig in Erinnerung habe: KeyPress/e.Handled=true

ggf. in Verbindung mit KeyPreview = true

Zumindest so ähnlich.

herbivore
private Nachricht | Beiträge des Benutzers
Samy1981
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

beantworten | zitieren | melden

Habe ich gerade mal getestet.
Habe ein Keypress-Event auf dem Form hinzugefügt, dann KeyPreview = true(das ist nötig um überhaupt das Keypress-Event auf Form-Ebene auszulösen.
Es löst also aus, ich kann auch sämtliche Tastatur Eingaben abfangen mit e.Handled = true, bis auf Enter/Return(TAB, ESC etc.).

Evtl. liegt es daran, das man im KeyPress Event nur e.Keychar auslesen kann, und das gibt bei Return(oder TAB, ESC) garnichts aus.....
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

beantworten | zitieren | melden

Hallo Samy1981,

siehe Th69s Antwort in KeyPress Event bekommen, egal welches Control den Focus hat:
Zitat von Th69
Nur bei System-Tasten (z.B. Tab, Alt etc.) muß man tiefer in die Trickkiste greifen, z.B. Form.ProcessCmdKey().

m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
private Nachricht | Beiträge des Benutzers
Samy1981
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

beantworten | zitieren | melden

-- Zitat entfernt --

danke genau so klappt es

Moderationshinweis von MarsStein (07.03.2011 - 13:05:21):

Bitte keine Full Quotes --> siehe [Hinweis] Wie poste ich richtig? 2.3

private Nachricht | Beiträge des Benutzers