Как я могу отобразить количество отмеченных флажков в текстовом поле из столбца в сетке данных?
У меня есть DataGridView с колонкой CheckBox в нем. (Это система инвентаризации.) Эта проверка используется для перемещения серийных номеров изделий из одного места в другое в нашей компании.
У меня также есть текстовое поле, в котором на данный момент сотрудник вводит количество перемещаемых предметов, затем проверяет соответствующие серийные номера и перемещает их.
Я хотел бы, чтобы число в текстовом поле было сгенерировано в зависимости от того, сколько серийных номеров проверено. Это вообще возможно? На данный момент я пробовал около сотни различных решений, и все они либо заканчиваются странными ошибками, либо не дают мне никаких результатов.
1 ответ
Не проверено, но это должно быть достаточно близко. Я прочитал статью или десять об этом один раз, когда у меня возникла та же проблема. Хитрость заключается в том, чтобы зафиксировать редактирование сразу после нажатия на поле, которое затем вызовет CellValueChanged
событие. Затем вы можете забрать отсчет.
Это должно обновить текстовое поле, когда вы установите и снимите флажок:
private void dgv_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dgv.IsCurrentCellDirty && dgv.CurrentCell.OwningColumn.Name == "MyCheckColumn")
dgv.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
private void dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == -1) //just a guard for the header row
return;
if (dgv.Columns[e.ColumnIndex].Name == "MyCheckColumn")
textBox.Text = dgv.Rows.Cast<DataGridViewRow>().Count(r => Convert.ToBoolean(r.Cells["MyCheckColumn"].Value)).ToString();
}
Надеюсь, Линк работает. Если нет, вам придется сделать это старомодным foreach
путь с переменной суммы. Я знаю DataGridViewRowCollection
иногда может быть привередливым