Я отображаю массив пар, используя 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.
Это кажется слишком сложным и чрезмерно неэффективным, чтобы вручную сортировать их в разумном порядке, а затем вручную копировать в буфер обмена.
Есть ли простой способ сделать это, или мне просто нужно приложить усилия к ручному копированию?