使用c#创建和复制带有文本/标题的超链接到剪贴板

时间:2011-01-04 12:11:03

标签: c# hyperlink copy clipboard paste

在各种程序中,您可以将超链接复制到剪贴板并将其粘贴到其他应用程序中。例如,可以将本页底部的“反馈始终欢迎”链接复制并粘贴到MS Word中。我想以编程方式创建这样一个链接,将其复制到剪贴板,然后将其粘贴到其他地方。

例如,带有 堆栈 的文字的链接会映射到 stackoverflow.com

我用Clipboard.SetData尝试过各种各样的东西,但似乎没什么可做的。

(我正在使用VS2010中的Windows表单应用程序,.NET4.0)

3 个答案:

答案 0 :(得分:16)

我不知道您正在使用的架构,但无论如何您只需复制剪贴板中的URL。

例如,假设您有一个名为 myHyperlink HyperLink控件和一个名为 copyButton Button

当用户点击该按钮时,您只需使用Clipboard.SetText(string) myHyperlink 的网址属性传递给该方法。

编辑:要在Word等其他程序中显示带标题的超链接,您必须使用特定标题以HTML方式设置文本。

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>

这是HTML的一个例子,让我们尝试用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>";

然后按如下方式使用它:

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

答案 1 :(得分:0)

如果有人遇到与我相同的问题: 对于“在另一个程序(如Word)中带有字幕的超链接”的建议解决方案不能完全像复制超链接那样工作,因为如果您进入了不支持超链接的程序,则将一无所获。如果您manualy复制超链接,它将超出标题。

我通过@ as-cii将标题字符串额外添加到解决方案的剪贴板中来实现这一目标 (它似乎并不完美,所以,如果您知道更好的解决方案,请告诉我)

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>";
string link = String.Format(html, "http://www.google.com", "Google");
DataObject dataObject = new DataObject();
dataObject.SetText(link, TextDataFormat.Html);
dataObject.SetText("Google");
Clipboard.SetDataObject(dataObject, true);

答案 2 :(得分:0)

https://theartofdev.com/2014/06/12/setting-htmltext-to-clipboard-revisited/最适合我。

处理@NellyFlo所描述的问题,以及在Skype for Business中进行粘贴。

简而言之: