Entwickler-Ecke
WinForms - Clickbare URL's in einer RichTextbox?!
mutterholzbein - So 20.01.08 23:31
Titel: Clickbare URL's in einer RichTextbox?!
hoi leutz,
ich habe ein wenig mit der yahoo-api rumgespielt. funzzt alles soweit auch ohne große probleme...
mit der api kann man aus einer anwendung heraus eine websuche realisieren.
es gibt auch eine
ClickableUrl()-eigenschaft die auch soweit geht (zeigt clickbare links in der RichTextBox an).
ABER:
ich habe keinen blassen schimmer wie ich diese eigenschaft an einen neuen process übergeben könnte...
nun meine frage
wie genau muß ich die abfrage nach einem click auf die url realisieren um dann einen process mit dem inhalt der url zu starten? :gruebel:
hier mal 3 zeilen code zum besseren verständnis:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| Process toLnk; StringWriter sw = new StringWriter(); foreach (Yahoo.API.WebSearchResponse.ResultType result in suchRes.Result) { sw.WriteLine("Titel:\t\t" + result.Title); sw.WriteLine("Beschreibung: " + result.Summary); sw.WriteLine("URL:\t\t" + result.Url); sw.WriteLine("Clickbare URL: ", result.ClickUrl); sw.WriteLine("=================================="); } richTextBox1.Text = sw.ToString(); progressBar1.Value = 100; |
:gruebel:
vielleicht hat einer ja ne idee?
danke im voraus
Kha - Mo 21.01.08 13:11
Da musst du überhaupt nichts machen ;) . Wenn DetectUrls true ist, erkennt die RTB alle URLs automatisch. Was du allerdings noch programmieren musst, ist die auszuführende Aktion beim Klicken, nämlich über das LinkClicked-Event. Einen Beispiel-Code findest du im SDK unter genau diesem Stichwort.
mutterholzbein - Mo 21.01.08 18:56
Titel: röö: ;)
hey
Khabarakh,
jaa DetectUrls ist
true...
danke erstmal, aber eben dieses click_event ist ja das problem... ;)
aber danke für den tip mit dem sdk. nur welches sdk meinst .net 2 oder .net 3 (ich tippe mal, "spontan" auf .net 2)?
greetz mhb
Kha - Mo 21.01.08 20:46
Ein 3.0-SDK gibt es gar nicht, das steckt jetzt im Windows-SDK. Da das Event ja wohl in beiden Frameworks enthalten ist, würde ich einfach in dem nachschauen, das installiert ist ;) . Oder natürlich direkt im VS über Hilfe bzw. F1, was auch immer da eigentlich angezeigt wird *g* (MSDN-Lib :gruebel: ? ).
[OT]
Ein auf das Y2K-Problem optimierte Version :zwinker: ?
[/OT]
mutterholzbein - Mo 21.01.08 22:07
Titel: röö
Khabarakh hat folgendes geschrieben: |
| Ein 3.0-SDK gibt es gar nicht, das steckt jetzt im Windows-SDK. |
... das ist so nicht ganz richtig. das 3.0 sdk ist eigentlich für vista gedacht, aber
laut microsoft, mit dem .net 3-redistributable-fw auch für xp verwendbar! ;) deswegen hab ich ja gefragt, hab beide installiert...
na gut ist nebensache... weiss jedenfalls nu wo ich nochmal reingucken muß/kann...
dank'schee, dafür :D
p.s. mit der F1-taste isses leider bei mir nicht getan...
ich blödmann habe mir ne msdn-doku fürs
xna-fw gezogen + installiert, und die hat erstmal eiskalt meine normale hilfe überschrieben (is sehr nervig weil ich für arbeit öfter die hilfe benötige aber selbst wenn ich nach c/c++ spezifischen sachen suche bekomme ich nur xna-bezogene ergebnisse[ausser ich hab netz dann noch die ol-hilfe])...sobald ich mal zeit finde werde ich diesen faux pa beheben...
naja gut,is auch egal...
greetz mhb
JüTho - Di 22.01.08 08:36
[OT]
SDK-Doku Offline-Version
@mutterholzbein,
zu dem von Dir genannten F1-Problem: Ich wollte die Doku lieber in einem separaten Fenster haben und verzichte deshalb auf F1 und Integration in die IDE. Stattdessen habe ich per Link im Autostart-Ordner folgenden Befehl (komplett in einer Zeile, Zeilenumbruch gilt nur hier im Forum) eingebaut:
Quelltext
1: 2: 3: 4:
| "C:\Programme\Gemeinsame Dateien\Microsoft Shared\Help 8\dexplore.exe" /helpcol ms-help://MS.NETFramework.v20.de /LaunchNamedUrlTopic DefaultPage /usehelpsettings NETFrameworkSDK.20 |
Vielleicht hilft Dir dieser Hinweis. Jürgen
mutterholzbein - Di 22.01.08 11:09
Titel: rööh: tip
JüTho hat folgendes geschrieben: |
[OT]SDK-Doku Offline-Version
Quelltext 1: 2: 3: 4:
| "C:\Programme\Gemeinsame Dateien\Microsoft Shared\Help 8\dexplore.exe" /helpcol ms-help://MS.NETFramework.v20.de /LaunchNamedUrlTopic DefaultPage /usehelpsettings NETFrameworkSDK.20 |
|
ja des ding seperat starten ist nicht das problem. nur der inhalt stimmt nicht! wie gesagt alles überschrieben... :motz:
naja hilft ja alles nix, hole mir nun die dokus nochmal neu!!!
greetz mhb :)
JüTho - Di 22.01.08 11:31
Titel: Re: rööh: tip
mutterholzbein hat folgendes geschrieben: |
| nur der inhalt stimmt nicht! wie gesagt alles überschrieben... :motz: |
Sorry, ich hatte angenommen, dass nur
Verweise (z.B. in der Registry) falsch gesetzt worden seien. Dass M$ beim Download solche
Inhalte überschreiben würde... Jürgen
mutterholzbein - Di 22.01.08 11:56
Titel: Re: rööh: tip
JüTho hat folgendes geschrieben: |
Sorry, ich ... |
^^ gibt nix zu entschuldigen. ich hab schei*e gebaut ;) von daher...
greetz mhb :zwinker:
Moderiert von
Narses: Farb-Tag entfernt
Kha - Di 22.01.08 16:12
Titel: Re: röö
mutterholzbein hat folgendes geschrieben: |
| das ist so nicht ganz richtig. |
Hö :shock: ? Dann zeige mir bitte mal einen Downloadlink. Ich zeige dir in der Zwischenzeit einen anderen Link:
mutterholzbein - Di 05.02.08 23:40
Titel: re..clickbare urls in rtfbox
hoi leutz,
habe das problem auf die von mir erdachte weise gelöst.
den zugehörigen source schiebe ich die tage, der vollständigkeit halber, nach.
greetz mhb
:wave:
mutterholzbein - Mi 05.03.08 11:38
Titel: Der Code zur obigen Frage
hallo leutz,
zwar etwas spät aber besser als nie (bin gerade voll im prüfungsstress), hier der code von den clickbaren url's in rtb-boxen:
als erstes in den obigen zeilen der anwendung (auf klassenebene) einen prozess initialisieren:
C#-Quelltext
1:
| private Process goTo = new Process(); |
als nächstes die registerkarte
ereignisse im
design-modus aufrufen und die eigenschaft
LinkClicked wählen, doppelclick ins freie feld rechts daneben u folgende zeilen code eintippen:
C#-Quelltext
1: 2: 3: 4:
| private void richTextBox1_LinkClicked_1(object sender, LinkClickedEventArgs e) { goTo = Process.Start(e.LinkText); } |
oder mit ner kleinen fehlerbehandlung:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| private void richTextBox1_LinkClicked_1(object sender, LinkClickedEventArgs e) { try { goTo = Process.Start(e.LinkText); } catch (Exception eXc) { richTextBox1.Rtf = @"{\rtf1\ansi \b Achtung:\b0 " + eXc.Message + @"!}"; } } |
das wars schon...
es gibt auch noch andere (und
elegantere) möglichkeiten den link ausführen zulassen aber diese simple methode war in meinem fall am besten geeignet...
für fragen usw. PN
greetz mhb :wave:
Kha - Mi 05.03.08 17:43
Titel: Re: Der Code zur obigen Frage
mutterholzbein hat folgendes geschrieben: |
| als erstes in den obigen zeilen der anwendung (auf klassenebene) einen prozess initialisieren: |
Sehr sinnig, wenn man als einzige Aktion ihn mit einer zweiten Prozess-Instanz überschreibt *g* . Bei dem gezeigten Code brauchst du das goTo-Feld jedenfalls überhaupt nicht.
mutterholzbein - Mo 24.03.08 03:20
Titel: Re: Der Code zur obigen Frage
Khabarakh hat folgendes geschrieben: |
...
Sehr sinnig, wenn man als einzige Aktion ihn mit einer zweiten Prozess-Instanz überschreibt *g* . Bei dem gezeigten Code brauchst du das goTo-Feld jedenfalls überhaupt nicht.
|
:arrow: na dann las mal hören ..
greetz mhb
Kha - Mo 24.03.08 11:27
Nun denn :gruebel: :
C#-Quelltext
1: 2: 3: 4:
| void richTextBox1_LinkClicked_1(object sender, LinkClickedEventArgs e) { Process.Start(e.LinkText); } |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!