Pfeiltasten nutzen, ohne Fokus zu verschieben

  • Hallo,


    ich habe eine Windows Forms Application mit Visual Studio 2005 in C++ geschrieben. Auf dem Fenster sind ein paar Buttons, und das Programm soll sich auch über die Tastatur bedienen lassen, unter anderem mit den Pfeiltasten. Lästig ist aber, dass diese den Fokus zwischen den Buttons verschieben. Wie kann man das vermeiden?


    Mehr Hintergrundinfo:
    Das Programm soll mit dem Screenreader Jaws zusammenarbeiten. Dieser dient dazu, die Bildschirmanzeige für blinde und sehbehinderte Benutzer vorzulesen. Sie sollen das Programm einerseits per Tastatur bedienen können, aber auch die Buttons mittels Tab und Enter nutzen können. Die Pfeiltasten stören dabei, zumal Jaws bei jeder Verschiebung des Fokus den Button ansagt. Das ist sehr lästig.


    Die Tastatureingaben werden in den Ereignisbehandlungsmethoden KeyDown, KeyPress und KeyUp in der Klasse Form1 (abgeleitet von class Form) verarbeitet. Ich habe schon versucht, e->Handled = true zu setzen (im Methodenparameter KeyEventArgs e), aber das bringt es nicht.


  • Hallo,
    i-wie versteh ich nicht so ganz was du erreichen willst:
    Wenn es per Pfeiltasten genutzt werden soll, muss der Fokus doch mitwandern, sonst hat das doch keinen Sinn? Klär mich mal auf^^... ;)

  • Wenn das Programm durch die Tastatur bedient werden soll, dann unter Umgehung der Buttons. Eine Tastatureingabe soll nicht einen Button auslösen, sondern wird in der entsprechenden Ereignisbehandlungs-Methode verarbeitet.


    Eine Alternative wäre es, eine bestimmte Tastatureingabe mit einem Button zu verknüpfen. Also wenn der Benutzer z.B. Pfeil nach rechts drückt, dann wäre das wie ein Klick auf einen bestimmten Button, der dieser Taste zugeordnet ist. Ideal wäre diese Lösung aber nicht. Ich weiß auch gar nicht, ob das geht.

  • Zitat von Megatherium;634073

    Wenn das Programm durch die Tastatur bedient werden soll, dann unter Umgehung der Buttons. Eine Tastatureingabe soll nicht einen Button auslösen, sondern wird in der entsprechenden Ereignisbehandlungs-Methode verarbeitet.


    Hmm, eine Möglichkeit wäre alle Buttons zu "deaktivieren" wenn das Programm per Tastatur gesteuert werden soll. Weiß ja nicht ob das zu Anfang ausgewählt wird? Oder ob es einfach über beides gesteuert werden soll.


    Zitat von Megatherium;634073

    Eine Alternative wäre es, eine bestimmte Tastatureingabe mit einem Button zu verknüpfen. Also wenn der Benutzer z.B. Pfeil nach rechts drückt, dann wäre das wie ein Klick auf einen bestimmten Button, der dieser Taste zugeordnet ist. Ideal wäre diese Lösung aber nicht. Ich weiß auch gar nicht, ob das geht.


    Das wäre auch Möglich, dann halt einfach die gleiche Funktion rufen bei der Tastatureingabe bzw. beim Klick auf den Button...


    Ich guck noch ob man den Fokus deaktivieren kann i-wie...

  • Zitat von P!lle;634136

    Das wäre auch Möglich, dann halt einfach die gleiche Funktion rufen bei der Tastatureingabe bzw. beim Klick auf den Button...


    Das ist genau das, was ich im Moment programmiert habe. Jeder Button ist mit einer Funktion verknüpft, die bei Klick aufgerufen wird. Eine Tastatureingabe, die der Funktion zugeordnet ist, führt (über KeyPress oder KeyUp) ebenfalls zum Aufruf der Funktion.


    Wenn man aber jetzt eine Pfeiltaste einer Funktion zugeordnet hat, dann wird nicht nur die Funktion aufgerufen, sondern auch der Fokus von dem Button, wo er gerade ist, zum nächsten geschoben. Und der Screenreader sagt den neuen Button brav an, weil das ja nötig ist, damit der Benutzer weiß, welchen Button er mittels Enter klicken kann.

  • Also, nochmal kurz zusammengefasst:
    - man soll das Programm ganz "normal" per Maus bedienen können
    - man soll das Programm per Shortcuts bedienen können


    Das bedienen mittels Pfeiltasten & Enter soll aber NICHT möglich sein, richtig?

  • Ja genau, das Programm soll per Maus und auch per Tastaturbefehle (Shortcuts) bedienbar sein.
    Es wäre schön, wenn auch die Pfeiltasten als shortcuts verwendet werden könnten. Das würde gut in das Bedienungskonzept passen. Im Prinzip geht das auch, aber es stört eben die Fokusverschiebung. Man kann es Jaws nicht abgewöhnen (habe ich zumindest nicht geschafft) dass es bei jeder Fokusverschiebung den neuen Button vorliest, und das stört.


    Also nochmal, um es ganz klar zu machen: Die Pfeiltasten sollen nicht so verwendet werden, dass man damit den Fokus zum richtigen Button schiebt und dann Enter drückt. Sondern die zugeordnete Funktion des Programms soll durch den Druck auf die Pfeiltaste direkt ausgelöst werden.

  • Hallo,
    wurde hier bereits eine Lösung gefunden oder besteht das Problem weiterhin?
    Hatte leider noch keine Zeit mich näher damit zu beschäftigen... :(

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!