2011-01-04 4 views
10

In allen Arten von Programmen können Sie Hyperlinks in die Zwischenablage kopieren und in andere Anwendungen einfügen. Der Link "Feedback immer willkommen" am Ende dieser Seite kann kopiert und in MS Word eingefügt werden. Ich möchte einen solchen Link programmgesteuert erstellen, in die Zwischenablage kopieren und dann woanders einfügen können.Erstellen und Kopieren von Hyperlink mit Text/Beschriftung in die Zwischenablage mit C#

Zum Beispiel kann ein Link mit dem Text Stapel die stackoverflow.com zu abbildet.

Ich habe alle möglichen Dinge mit Clipboard.SetData versucht, aber nichts scheint den Trick zu tun.

(Ich arbeite an einer Windows Form-Anwendung in VS2010, .NET4.0)

+1

Sie können angeben, welche Art von Architektur Ihres Anwendung wird verwendet? Versuchen Sie, dies in Windows Forms, ASP.NET oder WPF zu erreichen? –

+0

Sorry ... VS 2010, .NET 4.0 ... Win-Formular-Anwendung (kein ASP, WPF) – Rapunsel

Antwort

14

Ich weiß nicht, die Architektur, die Sie mit arbeiten, aber in jedem Fall, dass Sie einfach die URL kopieren in der Zwischenablage.

Zum Beispiel unter der Annahme, Sie haben ein HyperLink Steuerelement mit dem Namen myHyperlink und ein Buttonnamens copyButton.

Wenn der Benutzer auf die Schaltfläche klickt, müssen Sie nur Clipboard.SetText(string) verwenden, um die URL-Eigenschaft myHyperlink an die Methode zu übergeben.

EDIT: Um einen Hyperlink mit Beschriftung in einem anderen Programm zu zeigen, wie Word Sie den Text in einer HTML Art und Weise mit einem bestimmten Header gesetzt haben.

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> 

Dies ist ein Beispiel für HTML, versuchen sie es in C# zu verallgemeinern:

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>"; 

Und es dann wie folgt verwenden:

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

Ich fürchte, das ist nicht das, wonach ich suche. Kopieren Sie einen beliebigen Link auf dieser Seite und fügen Sie ihn in Word ein. Nimm den einen nach rechts, unter 'Related': 'Text aus der Zwischenablage mit dem Button einfügen'. Wenn ich das in Word einfüge, wird es als 'Einfügen von Text aus der Zwischenablage mit der Taste' angezeigt. Wenn Sie darauf klicken, werden Sie dorthin gebracht, wo die zugrunde liegende URL hinzeigt. Die Art des Objekts, das dafür verwendet wird, muss sowohl eine Überschrift (den angezeigten Text) als auch eine URL enthalten, daher ist Clipboard.setText (...) nicht ausreichend. – Rapunsel

+0

Es tut mir leid, ich hatte die Frage nicht gut verstanden. Was Sie aus dem Browser kopieren, ist im Wesentlichen HTML, Word erkennt es und zeigt die Links an. Versuchen Sie Folgendes: 'Clipboard.GetText (TextDataFormat.Html);'. Dann parse in deinem Programm den HTML-Code und zeige ihn wie du willst. –

+0

Ich war höchstwahrscheinlich etwas vage, sorry dafür. Die Clipboard.GetText (...) interessiert mich jedoch nicht. Ich kann den Inhalt der Zwischenablage in jedes Programm einfügen (durch Drücken von STRG + V), wie Word, Excel usw. Ich habe keine Kontrolle darüber, wie der Inhalt der Zwischenablage abgerufen wird. Die Frage ist, wie man die Zwischenablage füllt (aus Code), damit dies erreicht werden kann. Nehmen wir an, ich möchte, dass das Wort "go" auf "google.com" mappt. Wie schiebe ich das in die Zwischenablage, damit Word beim Einfügen in Word erkennt, dass es einen Hyperlink mit dem Text "go" anzeigen soll, der auf "google.com" verweist? – Rapunsel

Verwandte Themen