Usuário com melhor resposta
TreeView x MenuStrip

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
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! ;)- Sugerido como Resposta Luiz Felipe S. T. Costa segunda-feira, 9 de junho de 2014 16:38
- Marcado como Resposta Ricardo Barbosa Cortes segunda-feira, 9 de junho de 2014 16:59
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! ;)- Sugerido como Resposta Luiz Felipe S. T. Costa segunda-feira, 9 de junho de 2014 16:38
- Marcado como Resposta Ricardo Barbosa Cortes segunda-feira, 9 de junho de 2014 16:59
-
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...
-
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
-