Ich habe eine seltsame Situation, während Tastenkombinationen einer Taste zusammen mit Datagridview verwendet wird. Hier ist die Erklärung:DataGridView - Tastenkombinationen Vs MouseKlick für Cell Focus
Ich habe eine Winform, in der es eine Datagridview und eine Schaltfläche zum Speichern gibt. Die Schaltfläche Speichern verfügt über die Tastenkombination Alt + S. Ich gebe einige Zeilen in das Gitter ein und validiere alle Zellen auf der Schaltfläche Speichern, und wenn der Zellenwert ungültig ist, werde ich den Fokus auf diese Zelle setzen. Hier ist der Code verwendet, um das zu erreichen:
for (var index = 0; index < GridView.Rows.Count; index++)
{
var itemRow = GridView.Rows[index];
if (itemRow.Cells[SomeColumn.Name].Value.ToString() == string.Empty)
{
GridView.CurrentCell = itemRow.Cells[SomeColumn.Name];
GridView.Focus();
}
}
Above Code funktioniert gut und setzt den Fokus in der jeweiligen Zelle mit Cursor, wenn ich auf die Schaltfläche Speichern klicken.
Aber wenn ich Shortcut-Taste verwende, ist Fokus auf die Zelle überhaupt nicht eingestellt. Ich bin mir nicht sicher, warum es sich so verhält.
Aus Neugier habe ich ein Ereignis der Datagridview getestet. Das CellLeave-Ereignis von datagridview wird ausgelöst, wenn ich auf die Schaltfläche zum Speichern klicke, aber wenn ich die Verknüpfung zum Speichern verwende, wird es nicht ausgelöst.
Warum verhält es sich so? irgendwelche Eingaben? Wie kann ich den Fokus festlegen, wenn ich Shortcuts verwende?
Update: Ich habe einen Trick gemacht, um es richtig zu arbeiten. Ich habe den SaveButton.Focus() - Code in das Klickereignis der Schaltfläche zum Speichern als erste Zeile eingefügt. Dies ist redundant, erzwingt jedoch, dass das Raster den Fokus verliert, wenn der Benutzer die Abkürzungstaste verwendet, um auf diese Schaltfläche zuzugreifen. Diese Lösung funktioniert gut, aber nicht sicher, was der Grund für die oben genannte Situation sein könnte. Ich suche immer noch eine Antwort. :(
wie eine dumme Frage klingen, aber es ist einfach Um sicher zu sein: Wird das Tastenklickereignis ausgelöst, wenn Sie die Tastenkombination verwenden? – Jla
@DrDro: Ja, es wird ausgelöst :) – JPReddy
Basierend auf dem CellLeave-Ereignistest, vermute ich, dass Grid nicht einmal den Fokus verliert, daher kann der bestimmte Zellenfokus nicht richtig funktionieren, das ist nur eine Vermutung, aber es gibt keine r eason für warum Zellfokus nicht funktioniert auch in diesem Fall. – JPReddy