Получить ключевые события в элементе управления CheckedListBox, когда выбран элемент списка - PullRequest
0 голосов
/ 18 августа 2011

Я использую CheckedListBox в качестве основы для режима редактирования пользовательских классов DataGridView.Я хочу закрыть редактирование, когда пользователь нажимает клавишу выхода.Если у пользователя ничего не выбрано, переопределение OnKeyDown работает отлично.Проблема в том, что если они делают OnKeyDown (и OnKeyPressed) не запускаются CheckedListBox;вместо этого элемент строки отменяет выбор себя и съедает событие.Это означает, что если пользователь делает выбор, нажимая на любой элемент в списке, для закрытия редактирования требуется два нажатия клавиши escape.Один для отмены выбора строки, по которой они щелкнули, а второй для отмены режима редактирования.

Ответы [ 2 ]

2 голосов
/ 18 августа 2011

Попробуйте переопределить IsInputKey для вашего собственного DataGridView и вернуть false, если это [Esc], таким образом, сетка игнорирует Esc.

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.isinputkey.aspx

Возможно, вы могли бы усилить это поведение, игнорируя inputKey, если в «режиме редактирования» и т. П. Ничего нет.

0 голосов
/ 19 августа 2011

Чтобы получить доступ к escape-ключу, мне пришлось изменить поведение IDataGridViewEditingControl.EditingControlWantsInputKey (эквивалент IsInputKey для обычных элементов управления), чтобы передать escape в мое событие OnKeyDown.

/// <summary>
/// Implements the IDataGridViewEditingControl.EditingControlWantsInputKey method.
/// </summary>
/// <param name="key"></param>
/// <param name="dataGridViewWantsInputKey"></param>
/// <returns></returns>
public bool EditingControlWantsInputKey(Keys key, bool dataGridViewWantsInputKey)
{
    // Let the custom edit control handle the keys listed.
    switch (key & Keys.KeyCode)
    {
        case Keys.Escape:
            return true;
        default:
            return !dataGridViewWantsInputKey;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...