2011-01-04 10 views
10

In tutti i tipi di programmi è possibile copiare i collegamenti ipertestuali negli Appunti e incollarli in altre applicazioni. È possibile copiare e incollare in MS Word il link "feedback sempre benvenuti" in fondo a questa pagina. Voglio creare un collegamento di questo tipo a livello di codice, copiarlo negli Appunti e quindi essere in grado di incollarlo da qualche altra parte.Crea e copia collegamento ipertestuale con testo/didascalia negli Appunti con C#

Per esempio un collegamento con il testo Stack che mappa stackoverflow.com.

Ho provato tutti i tipi di cose con Clipboard.SetData ma nulla sembra fare il trucco.

(Sto lavorando su un'applicazione Windows form in VS2010, .NET4.0)

+1

è possibile specificare che tipo di architettura tua l'applicazione userà? Stai cercando di ottenere questo risultato in Windows Form, in ASP.NET o in WPF? –

+0

Siamo spiacenti ... VS 2010, .NET 4.0 ... Applicazione modulo Win (senza ASP, WPF) – Rapunsel

risposta

14

non so l'architettura si sta lavorando, ma in ogni caso non resta che copiare l'URL negli Appunti.

Per esempio, supponendo che hai un HyperLink controllo denominato myHyperlink e Button chiamato copyButton.

Quando l'utente fa clic sul pulsante, è sufficiente utilizzare Clipboard.SetText(string) passando al metodo Proprietà URL di myHyperlink.

MODIFICA: Per mostrare un collegamento ipertestuale con didascalia in un altro programma come Word, è necessario impostare il testo in modo HTML con una particolare intestazione.

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> 

Questo è un esempio di HTML, proviamo a generalizzare 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>"; 

e quindi utilizzarlo come segue:

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

Ho paura che questo non sia quello che sto cercando. Copia un link arbitrario in questa pagina e incollalo in e g Word. Prendi quello a destra, sotto "Correlati": "Incolla il testo dagli appunti usando il pulsante". Quando lo incollo in Word verrà visualizzato come "Incolla il testo dagli Appunti utilizzando il pulsante". Quando fai clic su di esso sarai indirizzato ovunque sia puntato l'URL sottostante. Il tipo di oggetto usato per questo deve contenere sia alcune didascalie (il testo visualizzato) che un URL, quindi Clipboard.setText (...) non è sufficiente. – Rapunsel

+0

Mi dispiace, non avevo capito bene la domanda. Ciò che copi dal browser è essenzialmente Html, Word lo riconosce e visualizza i collegamenti. Prova questo: 'Clipboard.GetText (TextDataFormat.Html);'. Quindi nel tuo programma analizza l'Html e visualizzalo nel modo desiderato. –

+0

Probabilmente ero un po 'vago, mi dispiace per questo. Tuttavia, Clipboard.GetText (...) non mi interessa. Posso incollare il contenuto degli appunti in qualsiasi programma (premendo CTRL + V), come Word, Excel, ecc. Non sarà possibile controllare come viene recuperato il contenuto degli appunti. La domanda è come riempire gli Appunti (dal codice) in modo che questo possa essere raggiunto. Diciamo che voglio che la parola "vai" venga mappata su "google.com". Come faccio a inserirlo negli Appunti in modo che quando incollato in Word, Word capisca che dovrebbe visualizzare un collegamento ipertestuale con il testo "vai" che viene mappato su "google.com"? – Rapunsel