BrightIdeasSoftware.FastObjectListView.CellEditFinished e.Cancel не работает - PullRequest
0 голосов
/ 20 февраля 2020

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

Проблема в том, что e.Cancel не отменяет событие? Есть ли в свойствах что-то, что нужно настроить, а?

private void HoursListView_CellEditFinished(object sender, CellEditEventArgs e)
    {
        string originalValue = e.Value.ToString();
        string newValue = e.NewValue.ToString();

        string[] timeSplit = e.NewValue.ToString().Split(':');

        if (!Regex.IsMatch(newValue, @"^\d{2}:\d{2}:\d{2}"))
        {
            e.Cancel = true;
            MessageBox.Show("Incorrect hours format!", "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        else if (Convert.ToDouble(timeSplit[0]) > 24)
        {
            e.Cancel = true;
            MessageBox.Show("Hours cannot be over 24!", "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        else if (Convert.ToDouble(timeSplit[1]) > 59)
        {
            e.Cancel = true;
            MessageBox.Show("Minutes value cannot be over 59!", "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        else if (Convert.ToDouble(timeSplit[2]) > 59)
        {
            e.Cancel = true;
            MessageBox.Show("Seconds value cannot be over 59!", "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Error);                
        }
        else
        {
            UpdateTotalHoursForTheWeek();
        }
    }

1 Ответ

0 голосов
/ 20 февраля 2020

Сортировка ... Оказывается, вам нужно использовать событие CellEditFinishing, а не CellEditFinished!

...