Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create and Copy hyperlink with text/caption to Clipboard with c#

In all sorts of programs you can copy hyperlinks to clipboard and paste them into other applications. E g the ’feedback always welcome’ link at the bottom of this page can be copied and pasted into MS Word. I want to create such a link programmatically, copy it to the Clipboard and then be able to paste it somewhere else.

For example a link with the text Stack that maps to stackoverflow.com.

I’ve tried all sorts of things with Clipboard.SetData but nothing seems to do the trick.

(I'm working on a Windows form application in VS2010, .NET4.0)

like image 701
Rapunsel Avatar asked Jan 04 '11 12:01

Rapunsel


People also ask

How do I copy and paste a hyperlink into text?

Copy/paste keyboard shortcuts to show web address or hyperlinked text. Normally, you can use Ctrl + C (copy) and Ctrl + V (paste). This is what will give you hyperlinked text instead of a web address by default.

How do I copy text to clipboard?

Open the file that you want to copy items from. Select the first item that you want to copy, and press CTRL+C. Continue copying items from the same or other files until you have collected all of the items that you want. The Office Clipboard can hold up to 24 items.

How do you create a hyperlink and paste it?

Create a hyperlink to a location on the webSelect the text or picture that you want to display as a hyperlink. Press Ctrl+K. You can also right-click the text or picture and click Link on the shortcut menu. In the Insert Hyperlink box, type or paste your link in the Address box.


1 Answers

I don't know the architecture you're working with, but in any case you have just to copy the URL in the Clipboard.

For example, assuming you've got an HyperLink control named myHyperlink and a Button named copyButton.

When the user clicks the button you have just to use Clipboard.SetText(string) passing to the method the URL Property of myHyperlink.

EDIT: To show an hyperlink with caption in another program like Word you have to set the text in a HTML way with a particular header.

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>

This is an example of HTML, let's try to generalize it in 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>";

And then use it as follows:

string link = String.Format(html, "http://www.google.it", "Google");
Clipboard.SetText(link, TextDataFormat.Html);
like image 108
as-cii Avatar answered Nov 06 '22 10:11

as-cii