Buttons mit Links hinterlegen aus XMLFile

  • VB.NET

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

    Ich hab deinen Code mal Lesbar gemacht.
    So sieht man auch gut warum nix geht.

    Alles unterhab zeile 28 steht außerhalb der Klasse
    Zeilen 3 & 9 öffnen eine neue klasse. Klasse von Zeile 9 wird nie geschlossen

    VB.NET-Quellcode

    1. Imports System.Xml
    2. Public Class Form1
    3. Private Function GetMenus() As XmlDocument
    4. Dim xxml As XmlDocument = New XmlDocument()
    5. xxml.Load("test.xml")
    6. Return xxml
    7. End Function
    8. Public Class DynamicMenuSubs
    9. Public Sub Menu1A()
    10. Debug.Print("Called Menu1A")
    11. End Sub
    12. Public Sub Menu1B()
    13. Debug.Print("Called Menu1B")
    14. End Sub
    15. Public Sub Menu1C()
    16. Debug.Print("Called Menu1C")
    17. End Sub
    18. Public Sub Menu2()
    19. Debug.Print("Called Menu2")
    20. End Sub
    21. Public Sub Menu3A()
    22. Debug.Print("Called Menu3A")
    23. End Sub
    24. Public Sub Menu3B()
    25. Debug.Print("Called Menu3B")
    26. End Sub
    27. End Class
    28. Private Sub BuildMenus()
    29. Dim xxml As XmlDocument = GetMenus()
    30. Dim toplevels As XmlNodeList = xxml.SelectNodes("Menus/TopLevel")
    31. Dim node As XmlNode
    32. For Each node In toplevels
    33. Dim tsmi As New ToolStripMenuItem
    34. tsmi.Text = node.Attributes("text").Value
    35. Dim sublevels As XmlNodeList = node.SelectNodes("NextLevel")
    36. If sublevels.Count = 0 Then
    37. tsmi.Tag = node.InnerText
    38. AddHandler tsmi.Click, AddressOf DynamicMenuHandler
    39. Else
    40. Dim subnode As XmlNode
    41. For Each subnode In sublevels
    42. Dim ddi As New ToolStripMenuItem
    43. ddi.Text = subnode.Attributes("text").Value
    44. ddi.Tag = subnode.InnerText
    45. AddHandler ddi.Click, AddressOf DynamicMenuHandler
    46. tsmi.DropDownItems.Add(ddi)
    47. Next
    48. End If
    49. MenuStrip1.Items.Add(tsmi)
    50. Next
    51. End Sub
    52. Private Sub DynamicMenuHandler(ByVal sender As System.Object, ByVal e As System.EventArgs)
    53. Dim s1 As ToolStripMenuItem = DirectCast(sender, ToolStripMenuItem)
    54. If s1.Tag.ToString.Length > 0 Then
    55. Dim SubType As System.Type = GetType(DynamicMenuSubs)
    56. Dim SubInfo As System.Reflection.MethodInfo = SubType.GetMethod(s1.Tag.ToString())
    57. Dim SubController As New DynamicMenuSubs
    58. SubInfo.Invoke(SubController, Nothing)
    59. End If
    60. End Sub
    61. End Class
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Zum Lesen von Xml-Dateien könnte dieses MSDN -Tutorial für dich interessant sein:
    support.microsoft.com/kb/307548/de

    Der Code ist zwar in C# geschrieben kannst du jedoch einfach übersetzen lassen -> zB developerfusion.com/tools/convert/vb-to-csharp/

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Den MSDn Link kannte ich schon, aber das ist ja völlig anderer Code...ich glaube auch nicht, das ich einen Fehler gemacht habe, sonst würde VB ja meckern, das der code falsch sei. Es fehlt bestimmt was Keiner eine Idee?
    Dann klingts zwar hart aber dann wird deine Anwendung nichts werden wenn du keinen Schimmer hast was du machst bzw. nicht weißt wie du Fehler findest und sie behebst.
    Lerne die Grundlagen! Du bekommst deine Anwendung sonst nur mit groben gemurks hin.
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.
    Ein letzter Tipp noch, vergiss mal das ganze Button Zeugs und UI Kram und nachdem du die Grundlagen gelernt hast versuchst du dir per Konsolenanwendung mal eine XML Datei so auzulesen das du das richtige Ergebnis bekommst.
    Du brauchst am Anfang nicht zwingend eine Oberfläche.....

    Probier z.b. sowas aus und verstehe es -> support.microsoft.com/kb/301228/de
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.