none
TreeView x MenuStrip RRS feed

  • Pergunta

  • Boa noite,

    Acho que essa pergunta é básica, mas não to conseguindo por ser principiante...

    Tenho uma TreeView que conterá uma relação de pastas e subpastas. Ao clicar com o botão direito acionará um menuStrip com opção de criar novas pastas.

    O problema é que, clicando em qualquer posição do treeView aciona o menuStrip, mesmo que nenhuma pasta esteja selecionada. Como faço para acionar o menuStrip apenas quando o clique for em um item (pasta) do treeView?

    Obrigado

    sexta-feira, 6 de junho de 2014 22:47

Respostas

  • Olha, eu não sei como fazer isso, mas como você não tem nenhuma resposta ainda, vou mostrar uma teoria:

    talvez se você consegui um código que diga o nome da pasta selecionada, você pode definir se o menu estará ativo ou não e adicione isso em um timer com intervalo de 100. que seria algo assim:

    Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick If TreeView1.Name <> "" Then MenuStrip1.Enabled = False Else MenuStrip1.Enabled = True End If End Sub

    Mesmo que isso não seja totalmente funcional, espero que te ajude a escrever algo que funcione.
    Me desculpe por não poder ajudar mais :(
    Boa Sorte! ;)

    sábado, 7 de junho de 2014 02:16

Todas as Respostas

  • Olha, eu não sei como fazer isso, mas como você não tem nenhuma resposta ainda, vou mostrar uma teoria:

    talvez se você consegui um código que diga o nome da pasta selecionada, você pode definir se o menu estará ativo ou não e adicione isso em um timer com intervalo de 100. que seria algo assim:

    Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick If TreeView1.Name <> "" Then MenuStrip1.Enabled = False Else MenuStrip1.Enabled = True End If End Sub

    Mesmo que isso não seja totalmente funcional, espero que te ajude a escrever algo que funcione.
    Me desculpe por não poder ajudar mais :(
    Boa Sorte! ;)

    sábado, 7 de junho de 2014 02:16
  • Boa noite,

    Escrevi errado na pergunta, não seria um menuStrip, mas sim um contextMenuStrip...

    Renato, obrigado pela resposta, pelo seu código comecei a estudar o controle o que consegui foi o seguinte:

    Utilizando o evento NodeMouseHover, consigo saber quando o mouse esta sobre o nó, porém, não consigo saber se o mouse saiu do nó e esta em uma area vazia...

        Private Sub TreeView1_NodeMouseHover(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeNodeMouseHoverEventArgs) Handles TreeView1.NodeMouseHover
    
            TreeView1.Cursor = Cursors.Hand
            TreeView1.ContextMenuStrip = ContextMenuStrip1
    
        End Sub
    

    ou utilizando o mouseMove, utilizando cordenadas e a posição do mouse consigo pegar o valor do nó e saber quando ele esta em uma area vazia, porém, apenas para baixo, na horizontal mesmo estando em uma area vazia, ele continua informando que esta sobre o nó...

        Private Sub TreeView1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TreeView1.MouseMove
    
            Dim X As Integer
            Dim Y As Integer
            Dim n
    
    
            X = Me.Left
            Y = Me.Top
    
            X = X + TreeView1.Left
            Y = Y + TreeView1.Top
    
            X = X + 10
            Y = Y + 30
    
            If (Convert.ToString(TreeView1.GetNodeAt(Control.MousePosition.X - X, Control.MousePosition.Y - Y))) = "" Then
                TreeView1.Cursor = Cursors.Default
                TreeView1.ContextMenuStrip = ContextMenuStrip
            Else
                TreeView1.Cursor = Cursors.Hand
                TreeView1.ContextMenuStrip = ContextMenuStrip1
            End If
    
        End Sub
    
    Se alguém tiver alguma alternativa, agradeço...

    terça-feira, 10 de junho de 2014 22:53
  • Me desculpe, mas meu conhecimento em VB foi adquirido de acordo com a necessidade, e eu nunca trabalhei com TreeViews, mas achei 2 scripts aqui na internet que devem conter a solução para o seu problema. Aqui estão:

    http://social.msdn.microsoft.com/Forums/vstudio/en-US/42bbc51f-e6f3-467d-9f37-29c6c90934cf/how-do-i-get-folder-name-from-treeview-selected-node?forum=vbgeneral

    http://www.cpearson.com/excel/foldertreeview.aspx

    quarta-feira, 11 de junho de 2014 02:36
  • Valeu...

    Vou ver os artigos que sugeriu...

    quarta-feira, 11 de junho de 2014 21:30