Tak už mi to došlo - stačí to napsat a přečíst po sobě, a hned se vám zapálí. Chování je celkem jasné. V okamžiku ukončení editace nódu, jak jsem psal výše, v jeho vlastnosti "text" zůstává stále ta původní hodnota a ta nová, kterou jsme právě zadali, je ve vlastnosti e.label. Takže si s textem u nodu můžeme dělat cokoliv, stejně je nám to k ničemu, protože to funguje tak, že do vlastnosti text nám přímo VB přiřadí původně zadanou hodnotu (uloženou v e.label) až po skončení ošetření události "AfterLabelEdit". Takže cokoliv jsme udělali my, stejně program vrátí do stavu, jaký jsme zadali v rámci editace textu u nodu. Nejlepší by proto bylo změnit "e.label", ale ten je, bohužel, pouze pro čtení. A protože jsem nenašel událost, která by se vyvolala PO vlastním přepsání textu u daného node, zkusil jsem na to jít druhou možnou cestou, zakázat VB, aby sám provedl editaci, kterou má na mysli - a má ty prostoto, ono to funguje. Nevím, nakolik je tento přístup správným, ale funkčním se mi ukázal být následující kód:
Private Sub TreeView1_AfterLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.NodeLabelEditEventArgs) Handles TreeView1.AfterLabelEdit
e.Node.Text = e.Label.Replace(" ", "_")
e.CancelEdit = True
End Sub
Snad Vám to pomůže ve Vašem snažení.
|