2011-01-04 24 views
10

Trong tất cả các loại chương trình bạn có thể sao chép siêu liên kết vào khay nhớ tạm và dán chúng vào các ứng dụng khác. Bạn có thể sao chép và dán vào liên kết 'phản hồi luôn được chào đón' ở cuối trang này bằng cách gửi và dán vào MS Word. Tôi muốn tạo một liên kết như vậy theo chương trình, sao chép nó vào Clipboard và sau đó có thể dán nó ở một nơi khác.Tạo và sao chép siêu liên kết với văn bản/chú thích vào Clipboard bằng C#

Ví dụ một liên kết với các văn bản stack mà các bản đồ để stackoverflow.com.

Tôi đã thử tất cả mọi thứ với Clipboard.SetData nhưng dường như không có gì để làm.

(Tôi đang làm việc trên một ứng dụng hình thức Windows trong VS2010, .NET4.0)

+1

Bạn có thể chỉ định những loại kiến ​​trúc của bạn ứng dụng sẽ sử dụng? Bạn đang cố gắng để đạt được điều này trong Windows Forms, trong ASP.NET hoặc trong WPF? –

+0

Xin lỗi ... VS 2010, .NET 4.0 ... Ứng dụng biểu mẫu giành chiến thắng (không có ASP, WPF) – Rapunsel

Trả lời

14

Tôi không biết kiến ​​trúc bạn đang làm việc với, nhưng trong mọi trường hợp bạn có chỉ để sao chép URL trong Clipboard.

Ví dụ, giả sử bạn đã có một kiểm soát HyperLink tên myHyperlinkButton tên copyButton.

Khi người dùng nhấp vào nút bạn chỉ sử dụng Clipboard.SetText(string) chuyển đến phương pháp, thuộc tính URL của myHyperlink.

EDIT: Để hiển thị siêu kết nối có chú thích trong chương trình khác như Word bạn phải đặt văn bản theo cách HTML với tiêu đề cụ thể.

Version:0.9 
StartHTML:<<<<<<<1 
EndHTML:<<<<<<<2 
StartFragment:<<<<<<<3 
EndFragment:<<<<<<<4 
SourceURL: www.google.it 
<html> 
<body> 
<!--StartFragment--> 
<a href="http://programmers.stackexchange.com/">programmers</a></span></span> 
<!--EndFragment--> 
</body> 
</html> 

Đây là một ví dụ về HTML, chúng ta hãy cố gắng khái quát hóa nó trong C#:

private const string html = @"Version:0.9 
StartHTML:<<<<<<<1 
EndHTML:<<<<<<<2 
StartFragment:<<<<<<<3 
EndFragment:<<<<<<<4 
SourceURL: {0} 
<html> 
<body> 
<!--StartFragment--> 
<a href='{0}'>{1}</a> 
<!--EndFragment--> 
</body> 
</html>"; 

Và sau đó sử dụng nó như sau:

string link = String.Format(html, "http://www.google.it", "Google"); 
Clipboard.SetText(link, TextDataFormat.Html); 
+0

Tôi e rằng đây không phải là những gì tôi đang tìm kiếm. Sao chép một liên kết tùy ý trên trang này và dán nó vào e g Word. Hãy chuyển sang bên phải, bên dưới ‘Liên quan’: ‘Dán văn bản từ nút sử dụng Clipboard’. Khi tôi dán nó vào Word, nó sẽ hiển thị dưới dạng ‘Dán văn bản từ nút sử dụng Clipboard’. Khi bạn nhấp vào nó, bạn sẽ được đưa đến bất cứ nơi nào URL bên dưới trỏ tới. Loại đối tượng được sử dụng cho điều này phải chứa cả một số chú thích (văn bản được hiển thị) và một URL, do đó Clipboard.setText (...) là không đủ. – Rapunsel

+0

Tôi xin lỗi, tôi đã không hiểu rõ câu hỏi. Những gì bạn sao chép từ trình duyệt về cơ bản là Html, Word nhận ra nó và hiển thị các liên kết. Hãy thử điều này: 'Clipboard.GetText (TextDataFormat.Html);'. Sau đó, trong chương trình của bạn phân tích cú pháp Html và hiển thị nó theo cách bạn muốn. –

+0

Tôi rất có thể mơ hồ, xin lỗi vì điều này. Tuy nhiên, Clipboard.GetText (...) không quan tâm đến tôi. Tôi có thể dán nội dung clipboard vào bất kỳ chương trình nào (bằng cách nhấn CTRL + V), như Word, Excel, v.v. Tôi sẽ không kiểm soát được nội dung của khay nhớ tạm được truy xuất như thế nào. Câu hỏi đặt ra là làm thế nào để điền vào Clipboard (từ mã) để điều này có thể đạt được. Giả sử tôi muốn từ ‘go’ để ánh xạ tới ‘google.com’. Làm thế nào để tôi đẩy nó vào clipboard để khi được dán vào Word, Word hiểu rằng nó sẽ hiển thị một siêu liên kết với văn bản ‘go’ để ánh xạ tới ‘google.com’? – Rapunsel