2013-10-21 20 views
5

tôi đã gặp phải một vấn đề khi sử dụng Clipboard trong một ứng dụng WPF: Mã của tôi trông như thế này:C# WPF Clipboard.SetText() không hoạt động đúng

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

Nhưng chỉ "\ t \ t \ t \ r \ n "được lưu trữ trong khay nhớ tạm của tôi. Đây là mã duy nhất sử dụng Clipboard trong ứng dụng của tôi và nó được gọi.

* Chỉnh sửa: Đã tìm thấy lỗi. Tôi đã sử dụng đoạn mã trên cho thao tác sao chép-dán trong DataGridRow. Công trình này cho rằng:

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)); 
    } 

Tôi đoán vấn đề là nó tự động cố gắng bắt chước sth ra khỏi DataGrid của tôi sau khi tôi Clipboard.SetText (..) và ghi đè lên văn bản của tôi một lần nữa.

Trả lời

5

Xóa bảng tạm dư thừa vì SetText tự động thực hiện điều đó cho bạn.

Đây là những gì tôi thường sử dụng:

Clipboard.SetText(msg, TextDataFormat.Text);

hoặc

Clipboard.SetText(msg,TextDataFormat.UnicodeText);

tham khảo là 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); 
    } 
Các vấn đề liên quan