TAB-Event blockieren in einem UserControl

Athor

Mitglied
Guten Tag allerseits

Da das C# Microsoft DataGridView eher zu den langsamen Grids im Darstellen der Daten ist, habe ich begonnen ein eigenes DatenGrid zu erstellen.

Abgeleitet ist meine Klasse vom Control.

Nun bin ich auf ein Problem gestossen welches mir etwas Kopfschmerzen bereitet, da ich grad keine Lösung finde.

Beim original-DataGridView kann man via TAB zwischen den einzelnen Spalten wechseln. Ich möchte dies auch.
Sprich ich habe versucht das TAB-Ereigniss zu bekommen, und das würde auch funktionieren. Das Problem ist aber dass der TAB weiter geht und den Focus auf das nächste Control setzt.
Ich möchte aber gerne in meinem Control bleiben und muss nun somit verhindern dass das TAB-Event "weitergeleitet" wird.

Die OnPreview-Geschichte bekommt zwar das Ereignis, aber leitet es trozdem weiter
Code:
protected override void OnPreviewKeyDown(PreviewKeyDownEventArgs e)
      {
         if (e.KeyCode == Keys.Tab)
         {
            return;
         }

         base.OnPreviewKeyDown(e);
      }

Das OnKeyDown-Event reagiert überhaupt nicht auf den TAB.

Meine Vermutung war noch dass das Ereigniss in der Form aufzuhalten ist. Dort kommt aber auch kein TAB-Event an. Weder im OnKeyDown noch im WndProc :-(
Und das Flag PreviewKeyDown ist auf True gesetzt.

Gibt es denn eine andere Möglichkeit den Tab zu verhindern? Ich möchte ungern beim verlieren des Focus den Focus zurückholen

Danke Für Eure Hilfe. Irgendwie hab ich wohl gerade ein Brett vor dem Kopf.

Grüsse
Dani
 
Aaalso ein hilfreicher Tip von Tobias(microsoft newsgroup) hat geholfen.

Man kann mit Hilfe von ProcessDialogKey in einem UserControl den Tab abfangen
und ihn nicht weiterleiten. Das Tab-Event wird aber trotzdem im Control ausgelöst!

Code:
protected override bool ProcessDialogKey(Keys keyData)
      {
         if (keyData == Keys.Tab)
         {
            return false;
         }

         return base.ProcessDialogKey(keyData);
      }

Vielleicht hift es ja dem einen oder anderen auch, der das selbe Problem hat.

Grüsse
Dani
 

Neue Beiträge

Zurück