TAB-Event blockieren in einem UserControl

21/10/2009 - 11:15 von Daniel Boss | Report spam
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 funktioniert
auch.
Das Problem ist aber dass der TAB weiter geht und den Fokus 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
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
OnPreview 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 müssen...

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

Grüsse
Dani
 

Lesen sie die antworten

#1 Tobias
21/10/2009 - 12:51 | Warnen spam
Hallo Daniel,

ich bin mir nicht sicher, ob dir das hilft, aber schau dir mal den Link an:
http://ondotnet.com/pub/a/dotnet/20...tml?page=1

Gruß,
Tobias


"Daniel Boss" <daniel.boss add timeas.ch> schrieb im Newsbeitrag
news:
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
funktioniert auch.
Das Problem ist aber dass der TAB weiter geht und den Fokus 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
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
OnPreview 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 müssen...

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

Grüsse
Dani

Ähnliche fragen