none
TreeViewNode geklickt öffnet bestimmte neue Form... RRS feed

  • Frage

  • Hi ,
    ich habe ein Problem mit VB 2008 Express bei folgendem Code:
        Private Sub TreeView1_NodeMouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseDoubleClick
            Dim clicked As TreeNode
            clicked = TreeView1.SelectedNode()
    
            If clicked = TreeNode(10) Then
                Dim form As New form3
                ShowDialog(Me)
            ElseIf clicked = TreeNode(11) Then
                Dim form As New form4
                ShowDialog(Me)
            End If
        End Sub
    Er soll den die doppelgeklickte node herausfinden und dann ein jeweiliges fenster öffnen...
    Ich weiss aber nicht wie ich es formulieren soll... danke im voraus.
    MfG
    Donnerstag, 10. September 2009 07:13

Antworten

  • Hallo BjoernFinder,

    Du kannst die Eigenschaft Text oder Index des TreeView.SelectedNode verwenden und prüfen.

    TreeView.SelectedNode-Eigenschaft  à http://msdn.microsoft.com/de-de/library/system.windows.forms.treeview.selectednode.aspx

    Um das Formular anzeigen verwendest Du die Form.Show-Methode à http://msdn.microsoft.com/de-de/library/system.windows.forms.form.show(VS.80).aspx



    Private Sub TreeView1_NodeMouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseDoubleClick
            Dim clicked As TreeNode
            clicked = TreeView1.SelectedNode()
    
            If clicked.Text = "Node6" Then
                Form2.Show()
            ElseIf clicked.Index = 8 Then
                Form3.Show()
            End If
    End Sub
    




    Grüße,

    Robert

    • Als Antwort markiert BjoernFinder Donnerstag, 10. September 2009 12:28
    Donnerstag, 10. September 2009 11:22
  • Hallo BjoernFinder,

    Du sollst anstatt “Node10“ den Namen was Du im TreeView stehen hast schreiben. Ja, es ist möglich.

    Hast Du auch mit Index versucht? Wie sieht dein TreeView aus?

    Grüße,

    Robert
    Donnerstag, 10. September 2009 12:23
  • Hallo BjoernFinder,

    Der Index ist die Ebene des Eintrags in dem Knoten.

    In deinem Beispiel "Spiele" hat Index 0 dann "PC" hat wieder Index 0, "Hitman 2" hat Index 0 und "Need For Speed Most Wanted" hat Index 1.

    Du kannst auch prüfen mit Hilfe der Name Eigenschaft aber ich glaube Du hast es jetzt J

    Private Sub TreeView1_NodeMouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseDoubleClick
            Dim clicked As TreeNode
            clicked = TreeView1.SelectedNode()
    
            Select Case clicked.Name
    
                Case "Node0"
                    MsgBox(clicked.Text)    '//Spiele
                    '//Anwendung 1
                    MsgBox("Index " & clicked.Index.ToString)
                Case "Node1"
                    MsgBox(clicked.Text)    '//PC
                    MsgBox("Index " & clicked.Index.ToString)
                    '//Anwendung 2
                Case "Node2"
                    MsgBox(clicked.Text)    '//Hitman 2
                    '//Anwendung 3
                    MsgBox("Index " & clicked.Index.ToString)
                Case "Node3"
                    MsgBox(clicked.Text)    '//Need For Speed Most Wanted
                    '//Anwendung 4
                    MsgBox("Index " & clicked.Index.ToString)
            End Select
    
    End Sub


     


    Grüße und Erfolg,

    Robert

    Donnerstag, 10. September 2009 13:38

Alle Antworten

  • Hallo BjoernFinder,

    Du kannst die Eigenschaft Text oder Index des TreeView.SelectedNode verwenden und prüfen.

    TreeView.SelectedNode-Eigenschaft  à http://msdn.microsoft.com/de-de/library/system.windows.forms.treeview.selectednode.aspx

    Um das Formular anzeigen verwendest Du die Form.Show-Methode à http://msdn.microsoft.com/de-de/library/system.windows.forms.form.show(VS.80).aspx



    Private Sub TreeView1_NodeMouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseDoubleClick
            Dim clicked As TreeNode
            clicked = TreeView1.SelectedNode()
    
            If clicked.Text = "Node6" Then
                Form2.Show()
            ElseIf clicked.Index = 8 Then
                Form3.Show()
            End If
    End Sub
    




    Grüße,

    Robert

    • Als Antwort markiert BjoernFinder Donnerstag, 10. September 2009 12:28
    Donnerstag, 10. September 2009 11:22
  • Hi Robert,

    danke für die Hilfe, aber ich glaube ich wurde falschverstanden... also ich habe deinen code ausprobiert, aber als ich in meiner TreeView1 im Hauptfenster den Knoten10 doppelt und mehrfach angeklickt habe, öffnete sich nicht Form2. Ich habe selbst die "Node6" in "Node10" umgewandelt, da es ja Knoten10 ist. (Zur Info: Ich weiss nicht ob das wichtig ist aber, der Knoten10 ist ein Unterordner.)
    Falls sowas überhaupt möglich ist, dass man einen Knoten(Unterordner, in diesem Fall) überhaupt dazu bringen kann eine bestimmte Form zu öffnen.
    Wenn dies nicht möglich ist, hätte ich die Frage, ob es über die ListView gehen würde, dass ich dort ein Item doppelt anklicke und dann siche die jeweilige Form zu dem Item öffnet.
    Ist sowas überhaupt Programmierbar? Kann man die ListView dazu bringen, ein markiertes Item, durch den Klick auf einen Button zum öffnen der jeweilig dafür vorgesehen Form des Items?

    Sorry, aber sowas kam nicht in den Lektionen von Microsoft vor.

    Danke im voraus.

    LG

    EDIT: Sorry, hat sich geklärt... habe ein bisschen rumexperimentiert und hat letzednlich geklappt...
    Großes Danke an Robert.
    • Bearbeitet BjoernFinder Donnerstag, 10. September 2009 12:28
    Donnerstag, 10. September 2009 12:17
  • Hallo BjoernFinder,

    Du sollst anstatt “Node10“ den Namen was Du im TreeView stehen hast schreiben. Ja, es ist möglich.

    Hast Du auch mit Index versucht? Wie sieht dein TreeView aus?

    Grüße,

    Robert
    Donnerstag, 10. September 2009 12:23
  • Also mein TreeView sieht so aus:
    Spiele - PC - Hitman 2
                     - Need For Speed Most Wanted

    Das mit dem Index, versteh ioch noch nicht so ganz....
    Donnerstag, 10. September 2009 12:59
  • Hallo BjoernFinder,

    Der Index ist die Ebene des Eintrags in dem Knoten.

    In deinem Beispiel "Spiele" hat Index 0 dann "PC" hat wieder Index 0, "Hitman 2" hat Index 0 und "Need For Speed Most Wanted" hat Index 1.

    Du kannst auch prüfen mit Hilfe der Name Eigenschaft aber ich glaube Du hast es jetzt J

    Private Sub TreeView1_NodeMouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseDoubleClick
            Dim clicked As TreeNode
            clicked = TreeView1.SelectedNode()
    
            Select Case clicked.Name
    
                Case "Node0"
                    MsgBox(clicked.Text)    '//Spiele
                    '//Anwendung 1
                    MsgBox("Index " & clicked.Index.ToString)
                Case "Node1"
                    MsgBox(clicked.Text)    '//PC
                    MsgBox("Index " & clicked.Index.ToString)
                    '//Anwendung 2
                Case "Node2"
                    MsgBox(clicked.Text)    '//Hitman 2
                    '//Anwendung 3
                    MsgBox("Index " & clicked.Index.ToString)
                Case "Node3"
                    MsgBox(clicked.Text)    '//Need For Speed Most Wanted
                    '//Anwendung 4
                    MsgBox("Index " & clicked.Index.ToString)
            End Select
    
    End Sub


     


    Grüße und Erfolg,

    Robert

    Donnerstag, 10. September 2009 13:38
  • Vielen Dank Robert...

    Ich habs jetzt kapiert... und vielleicht, benutz du mein Programm ja auch irgendwann einmal :D

    LG
    Donnerstag, 10. September 2009 13:47