У меня странная ситуация, когда используются сочетания клавиш для кнопки вместе с сеткой данных. Вот объяснение:
У меня есть winform, в которой есть сетка данных и кнопка сохранения. Кнопка «Сохранить» имеет сочетание клавиш Alt + S. Я ввожу несколько строк в сетку и проверяю все ячейки по нажатию кнопки «Сохранить». Если значение ячейки недопустимо, я установлю фокус на эту ячейку. Вот код, используемый для этого:
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();
}
}
Приведенный выше код работает нормально и устанавливает курсор в конкретной ячейке с помощью курсора, когда я нажимаю кнопку сохранения.
Но, когда я использую сочетание клавиш, фокус вообще не устанавливается на ячейку. Я не уверен, почему он так себя ведет.
Из любопытства я проверил событие обзора данных. Событие CellLeave для datagridview вызывается, когда я нажимаю на кнопку сохранения, но когда я использую ярлык для кнопки сохранения, оно не срабатывает.
Почему он так себя ведет? какие-либо входы? Как настроить фокусировку при использовании ярлыков?
Обновление : я сделал трюк для правильной работы. Я добавил код SaveButton.Focus () в событие нажатия кнопки «Сохранить» в качестве первой строки. Это избыточно, но заставляет сетку терять фокус, когда пользователь использует клавишу быстрого доступа для доступа к этой кнопке. Это решение работает нормально, но не уверен, что может быть причиной вышеуказанной ситуации. Все еще ищу ответ. (