Точность DataGridView удваивается при копировании в буфер обмена - PullRequest
0 голосов
/ 10 января 2019

Я отображаю массив пар, используя DataGridView. (Нет ограничений на размеры массива)

Я намеренно не отображаю каждое десятичное место каждого двойного для пользователя, вместо этого я устанавливаю формат ячейки в что-то вроде:

dataGridView.Columns[i].DefaultCellStyle.Format = "f3";

Таким образом, значение 1.112233 будет отображаться как «1.112».

Однако при копировании выбранной ячейки в буфер обмена и вставке в Excel я всегда получаю только отображаемую точность. Я хотел бы знать, есть ли простой способ указать, что я хочу, чтобы ячейка Значение копировалась в буфер обмена, а не FormattedValue ?

Обратите внимание, что я не ограничен копированием отдельных ячеек, я бы хотел, чтобы пользователь мог копировать несколько ячеек, т.е.

dataGridView.MultiSelect = true;
dataGridView.SelectionMode = DataGridViewSelectionMode.CellSelect;

При отладке я убедился, что свойство Значение в ячейке действительно содержит оригинальный double.

Я указал, что ValueType является двойным.

Я попытался переопределить команду Ctrl + C событием нажатия клавиши и вручную вывести выбранные ячейки в буфер обмена. Однако порядок ячеек в dataGridView.SelectedCells не обязательно соответствует порядку, в котором они были выбраны. Например, когда выбраны две соседние ячейки, их порядок, по-видимому, был произвольно изменен. то есть выберите значение в столбце 0, а затем значение в столбце 1, порядок в dataGridView.SelectedCells был столбцом 1, а затем столбцом 0.

Это кажется слишком сложным и чрезмерно неэффективным, чтобы вручную сортировать их в разумном порядке, а затем вручную копировать в буфер обмена.

Есть ли простой способ сделать это, или мне просто нужно приложить усилия к ручному копированию?

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