如何从DataGridView向剪贴板选择内容,模拟CTRL-C行为。
这不按预期工作:
Clipboard.SetText(this.dataGridView1.SelectedCells.ToString());
用户需要粘贴Excel。 CTRL-C工作正常,但我需要为上下文菜单编写脚本。
答案 0 :(得分:1)
SelectedCells
是CellCollection
,因此没有有用的ToString方法。
如果您只想复制一个单元格,您必须决定哪个,然后复制其Value
,例如:
Clipboard.SetText(this.dataGridView1.SelectedCells[0].Value.ToString());
如果你想要复制一个范围的单元格,事情会变得更复杂,特别是如果单元格区域不连续的话。但Crtl-C也无法在DGV的单元格范围内工作 - &gt ;剪贴板 - > Excel中。
对于简单范围,如果需要,您应该能够通过连接单元格值TABs
来构建必要的字符串以移动单元格向右,CRLF
转到下一行..你需要吗?
注意:在尝试访问SelectedCells[0]
之前,您需要检查是否SelectedCells.Count > 0
!
答案 1 :(得分:0)
要模拟按ctrl c的效果,您可以使用DataGridView.GetClipboardContent()
。例如:
Clipboard.SetText(this.dataGridView1.GetClipboardContent())
此方法检索表示所选单元格定义的区域的数据。该区域是包含所有选定单元格的最小矩形。
通过调用DataGridViewCell.GetClipboardContent
方法检索此区域中每个选定单元格的值。空白占位符值用于此区域中未选定的单元格。此方法将这些值组合到DataObject中,该DataObject包含用于复制到剪贴板的多种格式。
支持的剪贴板格式包括DataFormats.Text,DataFormats.UnicodeText,DataFormats.Html和DataFormats.CommaSeparatedValue。