Не удается получить или установить значения DataGridViewCheckBoxCell во время выполнения - PullRequest
0 голосов
/ 18 апреля 2020

Я смотрел другие посты, касающиеся этого, но я не могу получить значение из DataGridViewCheckBoxCell, кроме пустой строки.

Вот то, что я пытался установить true и false значения ячейки при создании новой строки, но безрезультатно. Я создаю все столбцы и строки во время выполнения между прочим, чтобы редактор не применялся.

//Default checkBox true and false values are the same and must be set to true and false
                if (Program.mainForm.TableMainGridView.Columns[column.Name] is DataGridViewCheckBoxColumn)
                {
                    val = false;

                    DataGridViewCheckBoxCell cell = new DataGridViewCheckBoxCell();
                    cell.FalseValue = false;
                    cell.TrueValue = true;

                    Program.mainForm.TableMainGridView.Rows[index].Cells[column.Name] = cell;
                }

Затем я попытался решить этот вопрос , приведя ячейку как DataGridViewCheckBoxCell до получения его значения по событию CellContentClick (с и без попытки установить cell.FalseValue & cell.TrueValue), а также безрезультатно.

DataGridViewCheckBoxCell cell = Program.mainForm.TableMainGridView.Rows[e.RowIndex].Cells[e.ColumnIndex] as DataGridViewCheckBoxCell;
                if (Convert.ToBoolean(cell.Value) == true)
                {
                    value = true;
                }
                else
                {
                    value = false;
                }

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

Есть ли у кого-нибудь еще эта проблема с созданием DataGridViewCheckBoxColumn и строкой в ​​сценарии, а затем возможность получить значение из ячейки флажка?

1 Ответ

0 голосов
/ 19 апреля 2020

Исправлено, пришлось использовать «.EditedFormatedValue» из ответа на этот вопрос. Не удается определить значения DataGridViewCheckBoxCell .

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

edit: Я обнаружил, что лучший способ реализовать это - написать

Program.mainForm.TableMainGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = Convert.ToBoolean(Program.mainForm.TableMainGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue);

в мое CellContentClick событие для запуска CellValueChanged. Странно, но, похоже, он также перестал запускать CellContentClick на CellLeave. это беспроигрышная победа, не буду подвергать сомнению.

установка cell.FalseValue & cell.TrueValue не требуется между прочим.

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