2012-09-20 64 views
6

Tengo un DataGrid. Pero quiero obtener el valor de celda enfocada en el evento CopyingRowClipboardContent. Pero e.ClipboardRowContent me devuelve todos los valores de celdas seleccionados por SelectionUnit. Y no debo cambiar la unidad de selección de la cuadrícula de datos. Para resolver el problema, necesito obtener el número de columna de celda enfocado. Luego eliminaré todos los valores de columna de clipboarcContent. ¿Cómo puedo obtener una celda enfocada en el evento CopyingRowClipboardContent?Cómo copiar el valor de celda DataGrid al portapapeles

Respuesta

11

Versión mejorada de la respuesta de 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

Encuentro la solución. Antes que nada, he necesitado el número de columna de la celda enfocada. He conseguido con este código:

DataGridResults.CurrentCell.Column.DisplayIndex; 

Luego, en CopyingRowClipboardContent evento, que debe eliminar todos los demás valores de columna.

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++; 
     } 
    } 
} 
4

También puede usar el siguiente código para controlar el contenido del portapapeles.

Clipboard.SetText("some value"); 
+0

Gracias, también es útil. –

1

he encontrado que esta solución funcionó para mí en todos los DataGrids; incluso los que tenían columnas ocultas.

// 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); 
Cuestiones relacionadas