Announcement

Collapse
No announcement yet.

Problem mit OnKeyDown

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit OnKeyDown

    Hallo

    Ich habe mir eine Selector-Komponente geschrieben, mit der ich Bildteile auswählen kann. Die Komponente ist von Control abgeleitet. Soweit funktioniert alles, solange ich mit der Maus den Selector bediene. Nun möchte ich aber auch mit der Tastatur den Selector verschieben oder vergrössern/verkleinern können. Dazu habe ich die Methode OnKeyDown überschrieben. Auch das funktionert, solange ich die Pfeiltaste mit Kontrol, Alt oder Shift kombiniere. Wenn ich jedoch die Pfeiltasten verwende, ohne dass ich eine der Umstallt-Tasten verwende, wird die Methode nicht aufgerufen.
    Code:
        protected override void OnKeyDown(KeyEventArgs e)
        {
          switch (e.KeyCode)
          { 
            case Keys.Left:
              if (e.Control)
                System.Media.SystemSounds.Beep.Play();
              else
                System.Media.SystemSounds.Exclamation.Play();
              break;
            default:
              base.OnKeyDown(e);
              break;
          }
        }
    Was ich festgestellt habe ist, dass dann der Fucus auf eine anderes Objekt wechselt, anstatt dass die Methode aufgerufen wird.
    Nun die Frage: Weiss jemand, wie man einem Control beibringen kann, dass das nicht mehr passiert?

    Danke und Gruss
    Xaver

  • #2
    Auszug aus der SDK-Doku:
    Control.KeyDown-Ereignis
    Bestimmte Tasten , z. B. die EINGABETASTE, TAB und ESC sowie die Pfeiltasten, werden von Steuerelementen automatisch behandelt. Damit diese Tasten das KeyDown-Ereignis auslösen, müssen Sie in jedem Steuerelement des Formulars die IsInputKey-Methode überschreiben. Der Code zum Überschreiben von IsInputKey muss bestimmen, ob eine der besonderen Tasten gedrückt wurde, und den Wert true zurückgeben.
    Gruß Jürgen

    Nachtrag: Immer wieder diese doppelten Fragen. Auf myCSharp.de hast Du schon eine Antwort erhalten, mit der Du zufrieden warst, kommst aber nicht auf die Idee, die Frage hier als erledigt anzugeben. Aber andere Leute können sich ja ruhig noch (überflüssigerweise) Gedanken machen...
    Zuletzt editiert von Jürgen Thomas; 20.07.2007, 09:51. Reason: Nachtrag hinzugefügt

    Comment

    Working...
    X