Отмена редактирования ячейки при двойном щелчке DataGridView C # WinForm - PullRequest
0 голосов
/ 12 мая 2018

У меня есть событие двойного щелчка в DataGridView, как показано ниже:

private void gridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
    // put something here to cancel the edit

    Form dialogForm = new dialogContainerForm(username);
    dialogForm.ShowDialog(this);
}

Когда этот двойной щелчок сработает, он вызовет другую форму, а когда эта дочерняя форма закроется, она загрузит сетку:

public void callWhenChildClick(List<string> codes)
{
    //some code here
    Grid_Load();
}

У меня есть проверка ячейки, которая всегда срабатывает, когда Grid_Load() вызывает:

private void gridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
    string code = e.FormattedValue.ToString();
    string headerText = gridView.Columns[e.ColumnIndex].HeaderText;

    if (!headerText.Equals("No. Transaksi")) return;

    if (string.IsNullOrEmpty(code))
    {
        MessageBox.Show("No. Transaksi tidak boleh kosong!");
        e.Cancel = true;
    }
}

Как игнорировать проверку этой ячейки только для этого случая Grid_Load()?Или есть какая-либо функция для отмены редактирования и игнорирования проверки при двойном щелчке по ячейке?

1 Ответ

0 голосов
/ 12 мая 2018

Если вам нужно предотвратить выполнение обработчика событий, его можно временно удалить из объекта, а затем повторно применить, когда вы захотите запустить его снова.

Чтобы отключить (фактически удалить) обработчик событий, добавьте код:

gridView.CellValidating -= gridView_CellValidating

После этой строки вы можете запускать любой код, который вы хотите, без него, вызывая выполнение обработчика событий.

Затем обработчик события можно сбросить или добавить заново, добавив строку:

gridView.CellValidating += gridView_CellValidating

Примечание. Каждый раз, когда вы хотите добавить обработчик события, как описано выше, вам также следует предшествоватьвызов с действием удаления, чтобы предотвратить выполнение обработчика событий более одного раза (или более ожидаемого числа раз).Если обработчик событий не был добавлен и вы пытаетесь удалить его, побочных эффектов не будет, однако, многократное добавление одного и того же обработчика событий вызовет многократное выполнение обработчика событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...