如何将DataGrid单元格值复制到剪贴板

时间:2012-09-20 11:37:54

标签: c# wpf wpfdatagrid

我有DataGrid。但我希望在CopyingRowClipboardContent事件中获得专注的单元格值。但由于e.ClipboardRowContentSelectionUnit会返回所有选定的单元格值。我不能改变datagrid的选择单位。为了解决这个问题,我需要获得有针对性的细胞柱数。然后,我将从clipboarcContent中删除所有列值。 如何在CopyingRowClipboardContent事件中获得专注细胞?

3 个答案:

答案 0 :(得分:15)

改进版Farhad的回答

private void DataGrid_CopyingRowClipboardContent(object sender, DataGridRowClipboardEventArgs e)
{
    var currentCell = e.ClipboardRowContent[ dataGrid.CurrentCell.Column.DisplayIndex];
    e.ClipboardRowContent.Clear();
    e.ClipboardRowContent.Add( currentCell );
}

答案 1 :(得分:4)

您还可以使用以下代码来控制剪贴板内容。

Clipboard.SetText("some value");

答案 2 :(得分:1)

我发现这个解决方案适用于所有DataGrids;即使是隐藏列的那些。

// Clipboard Row content only includes entries for visible cells
// Figure out the actual column we are looking for (taking into account hidden columns)
int columnIndex = dataGrid.CurrentCell.Column.DisplayIndex;
var column = dataGrid.Columns[columnIndex];

// Find the associated column we're interested in from the clipboard row content
var cellContent = clipboardRowContent.Where(item => item.Column == column).First();
clipboardRowContent.Clear();
clipboardRowContent.Add(cellContent);