2009-05-06 11 views
1

Ich habe eine DataGridView, wo ich manuell die fokussierten Zellen verwalten, wenn Sie mit Tab Schlüssel navigieren. Wenn zum Beispiel die erste Zelle aus der letzten Zeile die letzte Zelle ist, die in der DataGridView navigiert werden kann, möchte ich beim Drücken von Tab den Fokus auf das nächste fokussierbare Steuerelement (eine Schaltfläche) setzen.Focus nächste Kontrolle beim Drücken der 'TAB' Taste

SendKeys.Send („{TAB}“) wird nicht funktionieren - der Fokus geht in die zweite Zelle in der letzten Zeile

Antwort

0
Control nextControl = this.dataGridView1.Parent.GetNextControl(this.dataGridView1, true); 
Control prevControl = this.dataGridView1.Parent.GetNextControl(this.dataGridView1, false); 
6

Wenn Sie die StandardTab Eigenschaft auf True dann das Verhalten der Tab-Taste eingestellt wird auf die nächste Rasterzelle ändert auf dem Formular zu bewegen auf die nächste Steuerung bewegt. Dies kann sein, was Sie wollen.

Wenn Sie steuern möchten, welche Rasterzelle/Spalte/Zeile fokussiert wird, können Sie die ProcessDialogKey und ProcessDataGridViewKey Ereignisse in Ihrem Code behandeln.

+2

Sieht aus wie dies die akzeptierte Antwort sein sollte ... – NobodysNightmare

1

Wie Rune Grimstad sagte, wenn Sie ein anderes Tab-Verhalten als das standardmäßig oder StandardTab haben wollen, müssen Sie Ihr eigenes Tab-Verhalten implementieren.

Erstellen Sie eine neue Klasse, die von DataGridView erbt.

protected override bool ProcessDialogKey(Keys keyData) 
{ 
    case Keys.Tab | Keys.Shift: 
     // implement your logic here. 
     break; 
    case Keys.Tab: 
     // implement your logic here. 
     break; 
} 
0

Sie können einfach die DataGridView's StandardTab property verwenden.

dataGridView1.StandardTab = true; 

Beachten Sie, dass Benutzer diese mit nicht StandardTab mit CTRL +TAB Kombination tun können, kehrt StandardTab dieses Verhalten.

Verwandte Themen