2013-10-21 14 views
5

ho riscontrato un problema durante l'utilizzo degli Appunti in un'applicazione WPF: Il mio codice è simile al seguente:C# WPF Clipboard.SetText() non funziona correttamente

 var msg = "sample message for the clipboard"; 
     Clipboard.Clear(); 
     Clipboard.SetText(msg); 

Ma solo "\ t \ t \ t \ r \ n "viene memorizzato nei miei appunti. Questo è l'unico codice che utilizza gli Appunti nella mia applicazione e viene chiamato.

* Modifica: Trovato l'errore. Ho usato il codice precedente per un'operazione di copia-incolla in una DataGridRow. Questo funziona per questo:

private void OnCopyingRowClipboardContent(object sender, DataGridRowClipboardEventArgs e) 
    { 
      var msg = "sample" 
      e.ClipboardRowContent.Clear(); 
      e.ClipboardRowContent.Add(new DataGridClipboardCellContent(e.Item, (sender as DataGrid).Columns[0], msg)); 
    } 

Credo che il problema è che si è cercato di copiare automaticamente sth fuori dalla mia DataGrid dopo il mio Clipboard.SetText (..) e ha sovrascritto di nuovo il mio testo.

risposta

5

La cancellazione degli Appunti è ridondante poiché SetText lo fa automaticamente.

Questo è quello che io di solito uso:

Clipboard.SetText(msg, TextDataFormat.Text);

o

Clipboard.SetText(msg,TextDataFormat.UnicodeText);

riferimento è here

3
protected void clipboardSetText(string inTextToCopy) 
    { 
     var clipboardThread = new Thread(() => clipBoardThreadWorker(inTextToCopy)); 
     clipboardThread.SetApartmentState(ApartmentState.STA); 
     clipboardThread.IsBackground = false; 
     clipboardThread.Start(); 
    } 
    private void clipBoardThreadWorker(string inTextToCopy) 
    { 
     System.Windows.Clipboard.SetText(inTextToCopy); 
    }