От новичка до гуру: Курсы программирования на 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
Новые материалы

Что такое Webpack?
Webpack - это не что иное, как сборщик статических модулей, который позволяет отображать ваш код в веб-браузере. Он рекурсивно строит граф зависимостей, который включает каждый модуль, необходимый..

Всегда ли данные говорят правду?
Наша еженедельная подборка "Выбор редакции" и оригинальные материалы, которые необходимо прочитать. Объем данных, которые мы можем собрать, за последние годы вырос в геометрической прогрессии,..

Обратное распространение в RNN объяснил
Пошаговое объяснение вычислительных графов и обратного распространения ошибки в рекуррентной нейронной сети. Введение На заре машинного обучения, когда не было фреймворков, большая часть..

Используйте Python для анализа рейтингов и обзоров курсов OMSCS Технологического института Джорджии
Как получать и анализировать рейтинги курсов OMSCS, данные о сложности и рабочей нагрузке и компилировать их в интерактивную информационную панель Программа Онлайн-магистр компьютерных наук..

Стеки и очереди в Python
Стеки и очереди в Python Изучите 2 популярные линейные структуры данных. Зачем это читать? Стеки и очереди ( произносится как kyo͞o или kiu ) - это простые, но мощные структуры данных,..

Matt’s Tidbits #99  — «Элегантная обработка нуля»
На прошлой неделе я писал о некоторых крайних случаях правдоподобия в JavaScript . На этот раз у меня есть небольшая заметка об элегантной обработке нулевых/неопределенных значений. null..

Обучение работе с AWS с Habana Gaudi
Использование возможностей выделенных обучающих чипов DNN — часть 2 В октябре прошлого года AWS объявила о появлении типа инстанса Amazon EC2 DL1 . DL1, оснащенный восемью ускорителями..