2010-08-23 40 views
309

Làm cách nào để sao chép chuỗi (ví dụ: "hello") vào Clipboard hệ thống trong C#, vì vậy lần sau tôi nhấn CTRL + V Tôi sẽ nhận được "hello"?Làm thế nào để sao chép dữ liệu vào clipboard trong C#

+4

thể trùng lặp của [Làm thế nào để sao chép nội dung của một String để các clipboard trong C#?] (http://stackoverflow.com/questions/899350/how-to-copy-the-contents-of-a-string-to-the-clipboard-in-c) –

Trả lời

602

Bạn sẽ cần một tuyên bố namespace:

using System.Windows.Forms; 

HOẶC cho WPF:

using System.Windows; 

Để sao chép một chuỗi chính xác (nghĩa đen trong trường hợp này):

Clipboard.SetText("Hello, clipboard"); 

Để sao chép nội dung của hộp văn bản:

Clipboard.SetText(txtClipboard.Text); 

See here for an example. Hoặc ... Official MSDN documentation hoặc Here for WPF.

+11

đánh bại tôi với nó! +1 Lớp Clipboard nằm trong 'System.Windows.Forms' –

+0

tôi đã thêm không gian tên, nhưng tôi vẫn không thấy lớp Clipboard. có lẽ đó là vì tôi là ứng dụng giao diện điều khiển usintg? – aharon

+0

có nó! xe tăng! – aharon

39
Clipboard.SetText("hello"); 

Bạn sẽ cần phải sử dụng System.Windows.Forms hay System.Windows namespace cho điều đó.

+0

Câu trả lời tương tự như http://stackoverflow.com/a/3546026/206730 - Có thể xóa nó tốt hơn, IMHO là người mới với SO – Kiquenet

24

Kinh nghiệm của tôi với vấn đề này sử dụng WPF C# đối phó vào clipboard và System.Threading.ThreadStateException, Mã của tôi mà làm việc một cách chính xác với tất cả các trình duyệt

Thread thread = new Thread(() => Clipboard.SetText("String to be copied to clipboard")); 
thread.SetApartmentState(ApartmentState.STA); //Set the thread to STA 
thread.Start(); 
thread.Join(); 

tín dụng cho bài này here

nhưng công trình này CHỈ TRÊN LOCALHOST, KHÔNG TRY NÀY ĐẾN MÁY CHỦ, NGUYÊN NHÂN KHÔNG ĐI LÀM VIỆC. trên máy chủ tôi đã làm nó bằng cách sử dụng zeroclipboard. cách duy nhất, sau rất nhiều nghiên cứu.

+0

Tôi đã sử dụng nó trong kiểm tra Selenium tự động (webdriver) và nó hoạt động rất tốt! –

+0

@ andrew.fox bạn đã thử trên máy chủ - mô hình ứng dụng của bạn? bởi vì nếu nó là 2 máy riêng biệt, tôi đoán nó sẽ không hoạt động. – BMaximus

+0

Không, Selen sẽ mở cửa sổ trình duyệt trên máy tác nhân. –

20

Đối với bàn điều khiển dự án theo kiểu từng bước, trước tiên bạn sẽ phải thêm tham chiếu System.Windows.Forms. Các bước sau đây hoạt động trong Cộng đồng Visual Studio 2013 với .NET 4.5:

  1. Trong Solution Explorer, mở rộng dự án bảng điều khiển của bạn.
  2. Kích chuột phải vào Tài liệu tham khảo, sau đó nhấn Add Reference ...
  3. Trong Assemblies nhóm, dưới Khung, chọn System.Windows.Forms.
  4. Nhấp vào OK.

Sau đó, thêm các using tuyên bố sau với những người khác ở phía trên cùng của mã của bạn:

using System.Windows.Forms; 

Sau đó, thêm một trong các Clipboard sau.SetText câu lệnh để mã của bạn:

Clipboard.SetText("hello"); 
// OR 
Clipboard.SetText(helloString); 

Và cuối cùng, thêm STAThreadAttribute phương pháp Main của bạn như sau, để tránh một System.Threading.ThreadStateException:

[STAThreadAttribute] 
static void Main(string[] args) 
{ 
    // ... 
} 
+1

Lớp 'StackOverflowException' ngay trước' STAThreadAttribute' trong Thư viện Lớp Hệ thống .NET Framework =) –

+1

Anh hùng của tôi, cảm ơn bạn đã bổ sung thuộc tính! Đã cứu tôi một loạt thời gian. – Rinktacular

+0

@Rinktacular Bạn rất hoan nghênh =) Cảm ơn bạn đã phản hồi! –

Các vấn đề liên quan