TreeView a změna textu node   zodpovězená otázka

VB.NET, WinForms

Zdravím,

mám problém s TreeView, programově do něj plním seznam objektů. Pod pravým tlačítkem mám menu, ve kterém je položka "spravovat objekt". potřebuji po stisku tohoto tlačítka změnit text vybraného node tak, že před text dám nějaký znak, např. '>'. To mi všechno funguje, až když potřebuji vybrat nový node pro správu, potřebuji změnit původní vybraný text, a aby byl bez značky '>' a značka se přesunula na nově vybraný objekt. Jak to mám udělat? Mám znova plnit TreeView položkami, pamatzovat si na které polžce uživatel kliknul a tu změnit nebo se to dá udělat jednodušeji? Díky za rady. Jedná se o Winforms.

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

Použijte události BeforeSelect a AfterSelect (první se spustí těsně před vybráním nové položky, druhá se spustí hned po vybrání nové položky).

Kód může vypadat třeba takto:

    Private Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
        If TreeView1.SelectedNode IsNot Nothing Then
            With TreeView1.SelectedNode
                If Not .Text.StartsWith(">") Then
                    .Text = ">" & .Text
                End If
            End With
        End If
    End Sub

    Private Sub TreeView1_BeforeSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewCancelEventArgs) Handles TreeView1.BeforeSelect
        If TreeView1.SelectedNode IsNot Nothing Then
            With TreeView1.SelectedNode
                If .Text.StartsWith(">") Then
                    .Text = .Text.Substring(1)
                End If
            End With
        End If
    End Sub

TreeView1.SelectedNode je právě vybraná položka (v události BeforeSelect je to ještě ta stará, v události AfterSelect je to ale již ta nová). Je dobré na začátku zkontrolovat, zda-li je nějaká položka vybraná (protože nemusí být), to je přes to IsNot Nothing.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji, ale jedná se mi spíše o to, jak odebrat ten znak z položky, která byla vybrána předtím. Tzn., že mám seznam v Treeview asi 20 položek, poprvé uživatel klepne na 2. položku, která se mu označí, ale při klepnutí třeba na 15. položku potřebuji, aby se 2. položka vrýátila do původního stavu, tzn. bez znaku '>'. Díky.

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

Kdybyste si ráčil můj příspěvek pořádně přečíst a kód vyzkoušet, zjistil byste, že to dělá přesně to, co jste chtěl. Alespoň mě to funguje přesně tak, jak říkáte.

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

Omlouvám se, nemám kód pod událostí BeforeSelect a AfterSelect, ale pod ButtonClick v context menu. Trochu jsem to upravil a běhá to. Děkuji.

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

V pohodě, hlavně že 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