Hyperlink in Spalte (LinkLabel)

  • VB.NET
  • .NET (FX) 4.0

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von SaturnV.

    Hyperlink in Spalte (LinkLabel)

    Hallo!

    Da ich mit VB wenig Erfahrung habe, brauche ich Euren Rat und Hilfe.
    Ich habe in VB eine Datenbank erstellt. Abfrage und Checkboxen funktionieren einwandfrei.
    Was mir bis jetzt nicht gelungen ist, dass mir der LINK (URL oder Pfand) nicht geöffnet wird.
    Die Spalte "LINK" ist als LinkLabel festgelegt. Darin steht entweder der Pfad, oder der Link zu einer Internetseite.
    Wie schaffe ich es nun, dass, wenn ich auf den ausgewählten Link drücke, die Seite angezeigt wird.
    Prozess.Start wird hier vermutlich nicht viel nützen, da ja in jeder Spalte ein anderer LINK bzw. Pfad angegeben ist.
    In Access ist es einfach, denn hier setze ich die Feldeigenschaft auf "Hyperlink"

    Wer kann mir hier bitte weiterhelfen.
    Und wie gesagt, ich bin in VB ein blutiger Anfänger!!
    Aber in der Arbeit (das muss man sich mal vorstellen!!!) hat man uns Access genommen.
    Somit muss ich auf eine Datenbank in VB ausweichen.

    Danke!

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

    Willkommen im Forum!
    schaue dir die DatagridViewLinkColumn-Klasse einmal an: msdn.microsoft.com/de-de/libra…cs-lang=vb#code-snippet-2
    Da wird's gezeigt: social.msdn.microsoft.com/Foru…link-column-functionality

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „VB1963“ ()

    Hallo Stan :)

    In LinkLabel1 ist dieser Code hinterlegt. Macht ja VB automatisch. Die Spalte in der die ganzen Links hinterlegt sind habe ich "Link" genannt.

    Private Sub LinkLinkLabel_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLinkLabel.LinkClicked

    End Sub



    Du meinst, ich soll das als Code hinterlegen? Wenn ja, wo?

    Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
    If e.ColumnIndex = DataGridView1.Columns("MyLinkColumn").Index And e.RowIndex <> -1 Then
    Dim value As String = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
    Process.Start(value)
    End If
    End Sub
    Meinst du das? Dann geht er aber auf die microsoft-Seite, die im Process.Start angegeben ist. Er soll aber auf die Seite gehen, die in der Spalte eingetragen ist. Also müsste das, was im Process.Start steht, durch was Anderes
    ersetzt werden. Immer durch den Wert, der in der Spalte steht.

    Private Sub linkLabel1_LinkClicked(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked

    ' Specify that the link was visited.
    Me.LinkLabel1.LinkVisited = True

    ' Navigate to a URL.
    System.Diagnostics.Process.Start("http://www.microsoft.com")
    End Sub

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

    Oh je, das hab ich ganz übersehen. Das muss es wohl sein!
    Ich werde es morgen ausprobieren.

    Private Sub linkLabel1_LinkClicked(ByVal sender As Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked

    ' Determine which link was clicked within the LinkLabel.
    Me.LinkLabel1.Links(LinkLabel1.Links.IndexOf(e.Link)).Visited = True

    ' Displays the appropriate link based on the value of the LinkData property of the Link object.
    Dim target As String = CType(e.Link.LinkData, String)

    ' If the value looks like a URL, navigate to it.
    ' Otherwise, display it in a message box.
    If (target IsNot Nothing) AndAlso (target.StartsWith("www")) Then
    System.Diagnostics.Process.Start(target)
    Else
    MessageBox.Show(("Item clicked: " + target))
    End If

    End Sub

    Ich hoffe, dass es richtig ist.
    Bei Access ist es einfacher. Da legt man die Feldeigenschaft einfach auf "Hyperlink" fest, und schon ist es fertig. Aber VB ist nicht Access!!!

    Erst mal Danke und gute Nacht!!!

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

    Leider funktioniert es nicht:-(

    Hier ist LinkLabel1 markiert mit dem Vermerk: Die Handles-Klausel erfordert eine With-Events Variable.
    Füge ich den Quelltext wird zwar kein Fehler mehr angezeigt, aber wenn ich auf den LINK klicke, passiert leider nichts.
    Kannst du noch weiterhelfen. Wie war das in Access einfach :-). Da musste man die Feldeigenschaft einfach nur auf Hyperlink setzen und fertig war das Ganze!

    Imports System
    Imports System.Drawing
    Imports System.Windows.Forms

    Public NotInheritable Class Form1
    Inherits System.Windows.Forms.Form

    Friend WithEvents LinkLabel1 As System.Windows.Forms.LinkLabel

    <System.STAThread()> _
    Public Shared Sub Main()
    System.Windows.Forms.Application.Run(New Form1)
    End Sub 'Main
    Ich weis zwar nicht recht, was du da alles zusammenwurstelst, aber du hast oben im 2. Post ja schon das richtige Event angegeben:

    Visual Basic-Quellcode

    1. Private Sub LinkLinkLabel_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLinkLabel.LinkClicked
    2. Dim target As String = e.Link.LinkData.ToString
    3. If (target IsNot Nothing) AndAlso (target.StartsWith("www")) Then System.Diagnostics.Process.Start(target)
    4. End Sub
    da brauchst du ja nur die Zeilen 2-3 noch einfügen.
    Habe dir noch eine TestSolution angehängt...
    Dateien
    Ich sende dir mal das Testprojekt als Anlage.
    Vielleicht habe ich mein Problem nicht richtig formuliert.
    Ich habe eine lokale DB erstellt. Die letzte Spalte heißt "Link". In jeder Spalte ist also ein anderer Link.
    Die Tabelle siehst du in der "Detailansicht". Die Spalte Link ist als LinkLabel eingestellt.
    In einem Suchfeld werde ich eine Abfrage erstellen, dann wird natürlich immer ein anderer Link angezeigt.
    Ziel soll es sein, wenn ich auf den Link klicke, dass ein Pfad ein Dokument öffnet, oder einfach nur eine URL geöffnet wird.
    Dateien
    • Adressen.zip

      (34,78 kB, 99 mal heruntergeladen, zuletzt: )

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

    Hallo Stan :-))

    Oh mein Gott bin ich blind!!!
    Ich habe Process.Start(LinkLabel.Text) eingegeben.

    Es funktioniert. Vielen Dank!!!

    Wenn ich genauer geschaut hätte, so wäre es viel weniger Aufwand gewesen.
    Aber man lernt immer dazu!!!!