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
6
A
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");
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
- 1. Copiar rango al portapapeles
- 2. cómo copiar contenido de jtable al portapapeles
- 3. ¿Cómo copiar al portapapeles con GWT?
- 4. Cómo copiar al portapapeles en Emacs Lisp
- 5. ¿Cómo copiar al portapapeles con X11?
- 6. Cómo copiar al portapapeles en F #?
- 7. Cómo copiar datos al portapapeles en C#
- 8. Copiar contenido de DataGridView al portapapeles
- 9. Copiar BufferedImage en el portapapeles
- 10. OpenClipboard falló al copiar datos pegados de WPF DataGrid
- 11. Cómo copiar la salida de logcat al portapapeles?
- 12. WPF datagrid Color de la celda según el valor de la celda preivous
- 13. ¿Cómo copiar una línea al portapapeles en Eclipse?
- 14. Cómo copiar una cadena al portapapeles en C?
- 15. Cómo copiar líneas seleccionadas al portapapeles en vim
- 16. Elisp: copiar el búfer en el portapapeles
- 17. ¿Las extensiones de Chrome admiten copiar imagen al portapapeles?
- 18. Copiar texto desde una ventana CMD de Windows al portapapeles
- 19. Selección de toda la tabla/texto para copiar al portapapeles
- 20. Copiar al portapapeles en la extensión de Chrome
- 21. comandos cygwin para copiar al portapapeles de Windows
- 22. Portapapeles Copiar objetos ay desde
- 23. ¿Cómo copiar texto en el portapapeles en Javascript?
- 24. VIM: anexar al portapapeles
- 25. iPhone Copiar algo al portapapeles a través del código
- 26. Copiar y pegar varios elementos al portapapeles en IntelliJ IDEA
- 27. Cómo obtener el nivel de celda ComboBox para WPF DataGrid?
- 28. Copiar al portapapeles para todos los navegadores usando javascript
- 29. R: ¿Función para copiar al portapapeles en Mac/OSX?
- 30. ¿Cómo puedo copiar el contenido seleccionado de todas las celdas en un DataGrid (incluyendo DataGridTemplateColumn) con Silverlight 4?
Gracias, también es útil. –