Call Browser für URL aus Textfeld

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Peter329.

    Call Browser für URL aus Textfeld

    Hallo,

    ich habe in einem Textfeld eine gültige URL abgespeichert.

    Ich würde nun gern durch Click oder Doppelclick auf das Feld meinen Browser für diese URL aufrufen? Falls das von Bedeutung sein sollte: mein Standardbrowser ist Firefox.

    Wenn ich statt einem Text Feld ein Richtext Feld wähle, wird die gültige URL sogar als Link dargestellt (blau unterstrichen) aber ein Click / Doppelclick auf dieses Feld bewirkt nichts. Da hab ich wohl die Funktionalität des Richtext Feldes ein wenig überschätzt! *g*

    Also, weiß jemand wie ich etwa mit dem Click Ereignis meinen Standardbrowser für diese URL aufrufen kann?

    LG
    Peter
    Wow! Das klappt ja super! Und einfach ist es obendrein! Gaaanz herlichen Dank!

    Eine kleine Nachfrage habe ich noch. Wenn ich den Doppelclick verwende, dann wird der angeklickte Abschnitt der URL mit reverse video dargestellt (also blau unterlegt mit weißer Schrift). Kann man das noch per VB Anweisung wieder ausschalten. Dann wäre ich restlos glücklich!

    LG
    Peter
    Oder du löst es wie Word und co. und verwendest anstatt des Doppelklicks Strg + Klick, dann hast du auch mit der Auswahl keine Probleme mehr :).

    @LaMiy
    So gehts besser, denk ich ;): RichTextBox1.Select(0, 0)

    VB.NET-Quellcode

    1. Option Strict On
    2. Option Infer Off
    3. Imports System.Diagnostics.Process ' Wenn du das hier importierst musst du nicht mehr System.Diagnostics.Process.Start(""), sondern nur Start("") eingeben
    4. Public Class Form1
    5. Private Sub TextBox1_Click(sender As Object, e As EventArgs) Handles TextBox1.Click
    6. If TextBox1.Text.Contains("http://") Then
    7. Start(TextBox1.Text)
    8. End If
    9. End Sub
    10. End Class
    @Beatsleigher

    Der Sauberkeit halber würde ich TextBox1.Text vorher noch in eine Variable schreiben, denn
    Process.Start(TextBox1.Text) ist nicht so schön.
    Außerdem würde ich nicht auf .Contains prüfen, sondern auf .StartsWith.

    @Peter329

    Hier wäre noch eine Funktion zum prüfen der Adresse wobei diese nicht so gut ist, besser macht man das mit RegularExpressions. Google mal danach da gibt es fertige Lösungen zum Überprüfen einer URL.

    VB.NET-Quellcode

    1. Public Function IsUrl(ByVal input As String) As Boolean
    2. If input.StartsWith("http://") Or input.StartsWith("ftp://") Or input.StartsWith("www.") Then
    3. If input.EndsWith(".de") Or input.EndsWith(".com") Then
    4. Return True
    5. End If
    6. End If
    7. Return False
    8. End Function


    Aufruf. If IsUrl(deinevariable) Then Process.Start(deinevariable)

    LaMiy schrieb:

    @Beatsleigher

    Der Sauberkeit halber würde ich TextBox1.Text vorher noch in eine Variable schreiben, denn
    Process.Start(TextBox1.Text) ist nicht so schön.
    Außerdem würde ich nicht auf .Contains prüfen, sondern auf .StartsWith.


    Ja, das waere auch eine Moeglichkeit. Aber ich haette auch mehr String zu dem If-Statement hinzufuegen muessen.
    Hallo,

    nachdem ich mir mit den "Rich Text" Feldern auch "Rich Problems" eingehandelt habe, will ich jetzt die Idee meiner Vorschreiber aufgreifen, und das Ganz mit normalen Textfeldern abwickeln.

    Vielen Dank also für den Ansatz mit der Funktion "IsUrl" ... das klappt soweit auch ganz prima.

    Nun würde ich gern noch die erkannten URLs in der gewohnten Weise darstellen:

    VB.NET-Quellcode

    1. txtName.ForeColor = SystemColors.Blue
    2. txtName.Font.Underline = True


    Die Sache mit der Farbe funktioniert.

    Die Underline Anweisung bringt jedoch eine Compiler Meldung:

    Die Eigenschaft "Underline" ist Read Only.

    So geht das also nicht. Wie kann ich denn den Text abhängig vom Ergebnis der Funktion IsUrl unterstreichen, bzw. nicht untersteichen?

    LG
    Peter
    Hallo,

    ich bin immer noch am Suchen nach einer Lösung für mein Problem.

    Geht das möglicherweise nur über einen neuen Font?

    Das hab ich versucht, aber irgendwie wird trotzdem nicht unterstrichen.

    Und selbst wenn das funktioniert, wie kann ich das Unterstreichen dann wieder ausschalten, d.h. den vorangehenden Font wieder einstellen?

    Fragen über Fragen!

    LG
    Peter
    @Peter329

    In einer Textbox kann man glaube ich nur den ganzen Text formatieren.

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    4. If IsUrl(TextBox1.Text) Then
    5. Dim f As New Font("Microsoft Sans Serif", 8, FontStyle.Underline)
    6. TextBox1.Font = f
    7. TextBox1.ForeColor = Color.Blue
    8. End If
    9. End Sub
    10. Public Function IsUrl(ByVal input As String) As Boolean
    11. If input.StartsWith("http://") Or input.StartsWith("ftp://") Or input.StartsWith("www.") Then
    12. If input.EndsWith(".de") Or input.EndsWith(".com") Then
    13. Return True
    14. End If
    15. End If
    16. Return False
    17. End Function
    18. End Class
    Bilder
    • ergebnis.png

      754 Byte, 227×90, 183 mal angesehen
    Jetzt hab ich meinen Fehler gefunden. Ich verwende als Font "Courier New" ... und der unterstützt wohl das Unterstreichen nicht. Darauf muss man erst mal kommen! *g*

    Nachdem ich jetzt den Zeichensatz gewechselt habe, klappt die Sache.

    Also, ganz herlichen Dank, dass du mich hier auf die richtige Schiene gebracht hast. Deine Lösung ist super!

    LG
    Peter

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Peter329“ ()