Можно ли позволить только выбору пользователя вызывать событие SelectionChanged в DataGridView?

Методы SelectionChanged запускаются, когда выбор изменяется программой. Так, например, вызов dataGridView.ClearSelection() или dataGridView.Rows[0].Selected = true вызовет метод

private void dataGridView_SelectionChanged(object sender, EventArgs e)
{
}

Можно ли выполнить код только тогда, когда пользователь изменил выбор, например. выбрав строку/ячейку с помощью мыши или клавиатуры?


person jacobz    schedule 09.06.2014    source источник
comment
Нет хорошего способа сделать это, обратитесь к этому: заголовок stackoverflow.com/questions/650784/   -  person Ben Black    schedule 09.06.2014
comment
Насколько я знаю: нет. Но вы можете добавить немного логики в этот метод и написать в нем свой код после оператора if. Я думаю, вы должны быть в состоянии получить некоторую информацию о событии. Надеюсь, это будет полезно.   -  person sdrzymala    schedule 09.06.2014


Ответы (1)


Вам нужно будет закодировать это в

private bool _programmaticChange;

private void SomeMethod()
{
    _programmaticChange = true;
    dataGridView.ClearSelection();
    _programmaticChange = false;
}


private void dataGridView_SelectionChanged(object sender, EventArgs e)
{
    if (_programmaticChange) return;
    // some code
}

это заставит его работать только при действиях пользователя

person T.S.    schedule 09.06.2014