От новичка до гуру: Курсы программирования на CyberDuff

Событие проверки ячейки DataGridViewCheckBox в WinForms

У меня есть несвязанный столбец DataGridViewCheckBox. Когда пользователь меняет статус проверки, мне нужно выполнить метод, который проверяет статус каждой строки, ищет столбец флажка и выполняет некоторые математические операции с другими столбцами на основе этого статуса проверки.

До сих пор каждое событие, которое я пробовал: CellContentClick, CellMouseUp,CellValidated,CellValueChangedfire AFTER I leave the cell or grabsDataGridViewCheckBox` проверяло статус, предшествующий действию изменения.

Какое событие позволяет получить Value сразу после его изменения, но до того, как я покину ячейку или строку?


Ответы:


1

Сначала вам нужно установить свойства DataGridViewCheckBoxColumn TrueValue и FalseValue. Затем вы должны обработать DataGridView CellContentClick и CellValueChanged, чтобы определить, проверена ячейка или нет.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        var checkBoxColumn = (DataGridViewCheckBoxColumn)this.dataGridView1.Columns[0];
        checkBoxColumn.TrueValue = true;
        checkBoxColumn.FalseValue = false;

        this.dataGridView1.CellContentClick += new DataGridViewCellEventHandler(dataGridView1_CellContentClick);
        this.dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(dataGridView1_CellValueChanged);
    }

    private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        DataGridViewCheckBoxCell cell = (sender as DataGridView).Rows[e.RowIndex].Cells[e.ColumnIndex] as DataGridViewCheckBoxCell;

        if (cell != null)
        {
            if (cell.Value == cell.TrueValue)
            {
                MessageBox.Show("Cell checked.");
            }
            else
            {
                MessageBox.Show("Cell unchecked.");
            }
        }
    }

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        var dataGridView = sender as DataGridView;

        if (dataGridView.Columns[e.ColumnIndex] is DataGridViewCheckBoxColumn)
        {
            // Raise CellValueChanged
            dataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
        }
    }
}
10.12.2016
Новые материалы

Представляем Narwhal Technologies (Nrwl)
6 декабря 2016 г. Маунтин-Вью, Калифорния С тех пор, как Виктор Савкин и я (Джефф Кросс) присоединились к команде Angular в Google на заре Angular 1, Angular продемонстрировал феноменальный..

Путь AWS  — «Изучение машинного обучения — 10 начинающих ИИ и машинного обучения на AWS».
Универсальный ресурсный центр для изучения искусственного интеллекта и машинного обучения. НОЛЬ или ГЕРОЙ, начните свое путешествие здесь. Получите решения и пройдите обучение у экспертов AWS...

5 простых концепций Python, ставших сложными
#заранее извините 1) Переменные x = 4 y = 5 Переменная в Python — это символическое представление объекта. После присвоения некоторого объекта переменной Python мы приобретаем..

«Освоение вероятности: изучение совместной, предельной, условной вероятности и теоремы Байеса —…
Виды вероятности: Совместная вероятность Предельная вероятность Условная вероятность Диаграмма Венна в вероятностях: В “Set Theory” мы создаем диаграмму Венна...

Основы Spring: Bean-компоненты, контейнер и внедрение зависимостей
Как лего может помочь нашему пониманию Когда мы начинаем использовать Spring, нам бросают много терминов, и может быть трудно понять, что они все означают. Итак, мы разберем основы и будем..

Отслеживание состояния с течением времени с дифференцированием снимков
Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

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