的.SelectionMode
可让您选择所有单元格和行标题,或所有单元格和列标题,但我无法弄清楚如何让用户选择所有内容,包括同时显示行标题和列标题。DataGridView选择复制的所有单元格和行标题和列标题
我想给用户整个表(包括列标题)复制并粘贴到另一个文档文本或格式的文本,如Word或电子邮件的功能。它可以很好地工作,除非你不能获得列标题。
的.SelectionMode
可让您选择所有单元格和行标题,或所有单元格和列标题,但我无法弄清楚如何让用户选择所有内容,包括同时显示行标题和列标题。DataGridView选择复制的所有单元格和行标题和列标题
我想给用户整个表(包括列标题)复制并粘贴到另一个文档文本或格式的文本,如Word或电子邮件的功能。它可以很好地工作,除非你不能获得列标题。
我一直能够实现这一目标的唯一方法是通过创建一个ToolStripMenuItem
控制ContextMenu
控制。
首先我创建了覆盖默认ClipboardCopyMode
的DataGridView
的方法:
public void CopyToClipboardWithHeaders(DataGridView _dgv)
{
//Copy to clipboard
_dgv.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
DataObject dataObj = _dgv.GetClipboardContent();
if (dataObj != null)
Clipboard.SetDataObject(dataObj);
}
然后我调用该方法,并将它传递的GridView
在ToolStripMenuItem
的单击事件:
private void copyWithHeadersToolStripMenuItem_Click(Object sender, EventArgs e)
{
CopyToClipboardWithHeaders(dgv);
}
希望有所帮助!
在Visual Studio 2013年代的WinForms DataGridView中有可用于各种ClipboardCopyMode枚举。为了显示标题文本,用户将使用“EnableAlwaysIncludeHeaderText”枚举。 Microsoft Reference
禁用
复制到剪贴板被禁用。
EnableAlwaysIncludeHeaderText
所选单元格的文本值可以被复制到剪贴板。包含所选单元格的行和 列的标题文本。
EnableWithAutoHeaderText
所选单元格的文本值可以被复制到剪贴板。行或列标题文本包括用于 行或只包含当 DataGridView.SelectionMode属性设置为RowHeaderSelect或 ColumnHeaderSelect并且选择至少一个报头选择的细胞的列。
EnableWithoutHeaderText
所选单元格的文本值可以被复制到剪贴板。标题文本不包括在内。
继为我工作: 在XAML页面:
<DataGrid
Name="myGridName"
... >
<DataGrid.Columns>
....
</DataGrid.Columns>
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Copy with Headers" Click="Copy_Data_with_header">
</MenuItem>
</ContextMenu>
</DataGrid.ContextMenu>`
在XAML定义Copy_Data_with_header
。cs是这样的:
private void Copy_Data_with_header(object sender, RoutedEventArgs e)
{
DataGrid grd = this.myGridName;
grd.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, grd);
grd.ClipboardCopyMode = DataGridClipboardCopyMode.ExcludeHeader;
//so that you can copy individual cell if you like or right click on grid and copy with headers
}
WinForms不使用XAML – LarsTech