VisualStudio2013 - VisualBasic - TreeView   otázka

VB.NET

Dobrý den, chtěl bych se zeptat jak mohu přes ContextMenuStrip přesouvat položky v TreeView.

Děkuji za odpověď.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

http://support2.microsoft.com/kb/307967/...

třeba tam bude inspirace...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

JJ toto už jsem zkoušel ale to umožňuje přetahovat všechny prvky.

Verze 1

Node0
 |
 ------Node1
 |
 ------Node2
         |
         ------__Node3__
         |
         ------__Node4__
         |
         ------Node5

Verze 2

Node0
 |
 ------Node1
 |
 ------Node2
         |
         ------__Node4__
         |
         ------__Node3__
         |
         ------Node5

Já bych potřeboval aby šlo přesouvat jen ChildNode v Node2 a ne pomocí myši ale ContextMenuStrip, kde budou položky MoveUp, MoveDown.

Mám kód který to umožňuje ale daný prvek musí být vybraný, tzn. že nejdříve levým tlačítkem myši musím kliknout na ten prvek který chci přesunout a pak pravým a zvolit směr.

Když totiž bude označený (Selected) Node1 a já přes ContextMenuStrip na Node3 dám MoveDown tak se přesune Node1 pod Node2.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak tady jedna možnost, která je přes ContextMenuStrip a funguje jen pro určité Node, které jsou v tvNode.

1. v TreeView_MouseClick

Private Sub TreeView_MouseClick(sender As Object, e As MouseEventArgs) Handles TreeView.MouseClick
  If e.Button = Windows.Forms.MouseButton.Right Then
    tvNodeName = TreeView.GetNodeAt(e.X, e.Y).Text
  End If
End Sub

2. v ContextMenuStrip (pro MoveUp nebo MoveDown)

Private Sub cmsMoveUp_Click(sender As Object, e As EventArgs) Handles cmsMoveUp.Click
  Dim node As TreeNode
  Dim index As Integer
  For Each node In tvNode.Nodes
    If node.Text = tvNodeName Then
      index = node.Index
      Exit For
    End If
  Next
  tvNode.Nodes.RemoveAt(index)
  tvNode.Nodes.Insert(index + 1, node)
End Sub

Pro MoveDown bude jen v metodě Insert "-" místo "+".
Tím pádem může být reálně označený (Selected) jiný Node než, který chci přesunout.

Pokud je něco špatně prosím o kontrolu, ale takto mi to funguje.
nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback