13

我有一个DataGrid. 但我想在CopyingRowClipboardContent事件中获得集中的单元格值。但e.ClipboardRowContent由于SelectionUnit. 而且我不能更改数据网格的选择单元。为了解决这个问题,我需要获得重点单元格列号。然后我将从中删除所有列值clipboarcContent。我怎样才能在CopyingRowClipboardContent事件中获得焦点单元?

4

4 回答 4

19

法哈德答案的改进版本

private void DataGrid_CopyingRowClipboardContent(object sender, DataGridRowClipboardEventArgs e)
{
    var currentCell = e.ClipboardRowContent[ dataGrid.CurrentCell.Column.DisplayIndex];
    e.ClipboardRowContent.Clear();
    e.ClipboardRowContent.Add( currentCell );
}
于 2013-08-22T11:57:00.180 回答
5

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

Clipboard.SetText("some value");
于 2012-09-20T12:25:52.703 回答
1

我找到了解决方案。首先,我需要重点单元格的列号。我已经设法用这段代码得到它:

DataGridResults.CurrentCell.Column.DisplayIndex;

然后CopyingRowClipboardContent万一,我必须删除所有其他列值。

private void DataGridResults_CopyingRowClipboardContent(object sender, DataGridRowClipboardEventArgs e)
{
    int y = 0;

    for (int i = 0; i < e.EndColumnDisplayIndex; i++)
    {
        if (i != DataGridResults.CurrentCell.Column.DisplayIndex)
        {
            e.ClipboardRowContent.RemoveAt(i - y);
            y++;
        }
    }
}
于 2012-09-20T11:57:53.973 回答
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);
于 2017-03-24T16:44:35.877 回答