[英]copy Select cells with column headers to clipboard in devexpress xtragrid?
[英]DataGridView select all cells and row headers and column headers for copy
DataGridView
的.SelectionMode
允許您選擇所有單元格和行標題,或所有單元格和列標題,但我無法弄清楚如何讓用戶同時選擇所有內容,包括行標題和列標題。
我想讓用戶能夠將整個表格(包括列標題)復制並粘貼到另一個文檔中,如文本或格式化文本,如Word或電子郵件。 它開箱即用,除了你不能得到列標題。
我能夠實現這一目標的唯一方法是通過ContextMenu
控件創建ToolStripMenuItem
。
首先,我創建一個方法來覆蓋DataGridView
的默認ClipboardCopyMode
:
public void CopyToClipboardWithHeaders(DataGridView _dgv)
{
//Copy to clipboard
_dgv.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
DataObject dataObj = _dgv.GetClipboardContent();
if (dataObj != null)
Clipboard.SetDataObject(dataObj);
}
然后我調用該方法並在ToolStripMenuItem
的click事件中傳遞GridView
:
private void copyWithHeadersToolStripMenuItem_Click(Object sender, EventArgs e)
{
CopyToClipboardWithHeaders(dgv);
}
希望有所幫助!
在Visual Studio 2013中,winforms datagridview具有各種可用於ClipboardCopyMode的枚舉。 要顯示標題文本,用戶將使用“EnableAlwaysIncludeHeaderText”枚舉。 微軟參考
禁用
復制到剪貼板已禁用。
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.cs中定義Copy_Data_with_header
,如下所示:
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
}
在DataGridView的屬性中將ClipboardCopyMode
設置為EnableAlwaysIncludeHeaderText
,現在也復制ColumnHeaderCell文本。
在XAML中,您可以設置(在VS2019上驗證):
<DataGrid ClipboardCopyMode="IncludeHeader"...
現在很容易。 對於那些使用VS 2017的人,您現在可以將“ClipboardCopyMode”數據網格視圖屬性更改為“EnableAlwaysIncludeHeaders”,它將自動復制列標題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.