Buttons mit Links hinterlegen aus XMLFile

  • VB.NET

Es gibt 51 Antworten in diesem Thema. Der letzte Beitrag () ist von Snaptu.

    Buttons mit Links hinterlegen aus XMLFile

    Hallo,

    ich hoffe Ihr könnt mir helfen.



    Ich möchte in eine VB Anwendung einen Button hinterlegen (mehere) welche beim drücken einen WWW Link im Programm eigenen Browser Fenster öffnen. Das ist soweit auch kein Problem und habe ich wie folgt gelöst:



    Private Sub Grundbuchauskunft_Click(sender As Object, e As EventArgs) Handles Grundbuchauskunft.Click

    Browser.Navigate("http://")

    Browser.Visible = True

    ToolStripButton1.Visible = False

    End Sub





    Mein Problem dabei ist, das der Link ja nun statisch im Quellcode vorhanden ist. Ich möchte ihn daher dynamisch per XML, TXT oder was auch immer laden. Wie mache ich das?



    Vielen Dank im Voraus
    Willkommen im Forum. :thumbup:

    Doener schrieb:

    Wie mache ich das?
    So:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim lines() As String
    3. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    4. lines = IO.File.ReadAllLines("MEIN_PFAD")
    5. End Sub
    6. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    7. Browser.Navigate(lines(42))
    8. End Sub
    9. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Habe das nun so abgeändert:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim lines() As String

    lines = IO.File.ReadAllLines("C:\Temp\www.txt")

    Browser.Navigate(lines(1))

    End Sub


    Geht aber nicht :( 42 ist doch di Zeile, oder? Ist der Pfad so korrekt?

    Doener schrieb:

    Geht aber nicht
    Sehr präzise Fehlerbeschreibung. ;(
    Was genau geht bzw. geht nicht?

    Doener schrieb:

    42 ist doch di Zeile, oder?
    Ja, beginnend bei Index 0.

    Doener schrieb:

    Ist der Pfad so korrekt?
    Weiß ich nicht, leider kenne ich den Inhalt Deines temporären Verzeichnisses nicht, auch nicht den Inhalt Deiner Datei. Mach mal dies:

    VB.NET-Quellcode

    1. Dim lines() As String
    2. lines = IO.File.ReadAllLines("C:\Temp\www.txt")
    3. MessageBox.Show(lines(1))
    4. Browser.Navigate(lines(1))

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    So geht es, es lag daran, das ich Zeile 1 angab, aber es muss ja die 0 sein. Vielen Dank

    Dim lines() As String

    lines = IO.File.ReadAllLines("C:\Temp\www.txt")

    MessageBox.Show(lines(0))

    Browser.Navigate(lines(0))

    Browser.Visible = True




    Wenn ich das ganze noch um eine Ip Funktion erweitern will, was muss ich dann tun? Also ich will, das wenn ich in einem 192er Netz bin, das dann zeile 0 genommen wird. Wenn ich in einem 172er Netz bin, dann die Zeile 1.


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

    @Doener So was:

    VB.NET-Quellcode

    1. If net = 192 Then
    2. Browser.Navigate(lines(0))
    3. Else If net = 172 Then
    4. Browser.Navigate(lines(1))
    5. End If
    Du musst dann natürlich noch abtesten, ob diese Zeilen ühaupt da sind, sonst kommt eine IndexOutOfRange-Exception.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Du bist der Beste ;)

    Noch eine letzte Frage. Ich habe ein toolstripdropdown menü und würde nun gerne die Links von oben dort als Beschriftung einfügen.

    Beispiel:
    Text Datei
    [Name der Webseite]
    www.yahoo.de

    Das rufe ich ja nun ab mit

    Dim lines() As String
    lines = IO.File.ReadAllLines("C:\Temp\www.txt")
    Browser.Navigate(lines(2))

    Aber wie bekomme ich den Name der Webseite auf das toolstripdropdown menü, so das es dynamisch aus der Textdatei geladen wird? Und geht die Lösung dann auch für einen ToolstripButton?

    Doener schrieb:

    auf das toolstripdropdown menü
    So:

    VB.NET-Quellcode

    1. Me.XxxxxToolStripMenuItem.Text = lines(2) ' "www.google.de"
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo Rod,

    muss leider noch mal um Hilfe bitten, da die Anforderung geändert wurde. Ich möchte nun gerne einen Button haben, dessen Beschriftung aus einer XML Datei kommt und beim drücken einen Link aufruft - der auch aus der XML Datei kommt. Eigentlich muss das ganze am Ende wieder eine Menübar werden, welches sich anhand der XML Datei füllt, aber ich glaube ein Button ist für den Anfang einfacher ;)

    sonne75 schrieb:

    Doener schrieb:

    einen Button haben, dessen Beschriftung

    Wie heißt denn die Eigenschaft, die die Beschriftung beim Button bestimmt?

    Und wo wird etwas aufgerufen, wenn man auf Button klickt? Wie der Link aufgerufen werden soll, weißt du ja schon...



    Ich verstehe deine Frage nicht, aber vielleicht hilft das hier: Ich habe ein Menü, welches durch eine XML gefüllt werden soll. Leider bleibt das Menü leer und es kommt auch kein Fehler. Und wie bekomme ich nun die Links in die XML Datei?



    Imports System.Xml

    Public Class Form1

    Private Function GetMenus() As XmlDocument





    Dim xxml As XmlDocument = New XmlDocument()

    xxml.Load("test.xml")

    Return xxml

    End Function

    Public Class DynamicMenuSubs

    Public Sub Menu1A()

    Debug.Print("Called Menu1A")

    End Sub

    Public Sub Menu1B()

    Debug.Print("Called Menu1B")

    End Sub

    Public Sub Menu1C()

    Debug.Print("Called Menu1C")

    End Sub

    Public Sub Menu2()

    Debug.Print("Called Menu2")

    End Sub

    Public Sub Menu3A()

    Debug.Print("Called Menu3A")

    End Sub

    Public Sub Menu3B()

    Debug.Print("Called Menu3B")

    End Sub

    End Class

    Private Sub BuildMenus()

    Dim xxml As XmlDocument = GetMenus()

    Dim toplevels As XmlNodeList = xxml.SelectNodes("Menus/TopLevel")

    Dim node As XmlNode



    For Each node In toplevels

    Dim tsmi As New ToolStripMenuItem

    tsmi.Text = node.Attributes("text").Value

    Dim sublevels As XmlNodeList = node.SelectNodes("NextLevel")

    If sublevels.Count = 0 Then



    tsmi.Tag = node.InnerText

    AddHandler tsmi.Click, AddressOf DynamicMenuHandler

    Else

    Dim subnode As XmlNode

    For Each subnode In sublevels

    Dim ddi As New ToolStripMenuItem

    ddi.Text = subnode.Attributes("text").Value

    ddi.Tag = subnode.InnerText

    AddHandler ddi.Click, AddressOf DynamicMenuHandler

    tsmi.DropDownItems.Add(ddi)

    Next

    End If

    MenuStrip1.Items.Add(tsmi)

    Next

    End Sub

    Private Sub DynamicMenuHandler(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Dim s1 As ToolStripMenuItem = DirectCast(sender, ToolStripMenuItem)



    If s1.Tag.ToString.Length > 0 Then

    Dim SubType As System.Type = GetType(DynamicMenuSubs)

    Dim SubInfo As System.Reflection.MethodInfo = SubType.GetMethod(s1.Tag.ToString())

    Dim SubController As New DynamicMenuSubs

    SubInfo.Invoke(SubController, Nothing)

    End If

    End Sub

    End Class



    <?xml version="1.0" encoding="UTF-8"?>

    <Menus>
    <TopLevel text="Menu 1">
    <NextLevel text="Menu 1.A">Menu1A</NextLevel>
    <NextLevel text="Menu 1.B">Menu1B</NextLevel>
    <NextLevel text="Menu 1.C">Menu1C</NextLevel>
    </TopLevel>
    <TopLevel text="Menu 2">Menu2</TopLevel>
    <TopLevel text="Menu 3">
    <NextLevel text="Menu 3.A">Menu3A</NextLevel>
    <NextLevel text="Menu 3.B">Menu3B</NextLevel>
    </TopLevel>
    Dein Code ist nicht lesbar.

    Ich will, dass du rausfindest, wie du die Beschriftung vom Button ändern kannst. Dafür brauche ich keine 100 Zeilen Code von dir. Sondern nur eine. Die die Beschriftung vom Button ändert.