TreeView проблема с LabelEdit

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

VAngel
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 81
Зарегистрирован: 13.01.2005 (Чт) 0:10
Откуда: 2:5030

TreeView проблема с LabelEdit

Сообщение VAngel » 26.11.2006 (Вс) 19:22

Код: Выделить всё
    Private Sub TreeView1_BeforeLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.NodeLabelEditEventArgs) Handles TreeView1.BeforeLabelEdit
        Dim str As String
        str = Microsoft.VisualBasic.Strings.Left(e.Node.Text, Len(e.Node.Text) - 2)
        Me.TreeView1.SelectedNode.Text = str
        MsgBox("ВОт тут")
    End Sub


Есть дерево, хочу что бы можно было редактировать текст, но передтем как редактировать надо убрать кое что из текста. Написал такой код, вот только понять не могу почему не работает. Вот там где msgbox видно, что заголовок изменился, но как только дело доходит до самого редактирования заголовок остаеться таким каким и был не меняеться. Что не правильно?

Neco
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 06.07.2005 (Ср) 1:21

Сообщение Neco » 26.11.2006 (Вс) 20:47

видимо before не такой уж и before. должно быть текст передаётся для редактирования ДО вызова события.
могу предложить только извратиться так:
Код: Выделить всё
Public Class Form1
    Private Class Renamer
        Public Event AfterLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.NodeLabelEditEventArgs)
        Public Event BeforeLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.NodeLabelEditEventArgs)

        Dim WithEvents trv As TreeView
        Dim WithEvents tmr As Timer
        Dim n As TreeNode

        Public Sub New(ByVal n_trv As TreeView)
            trv = n_trv
            trv.LabelEdit = False
            tmr = New Timer
            tmr.Interval = 1000
        End Sub

        Private Sub trv_AfterLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.NodeLabelEditEventArgs) Handles trv.AfterLabelEdit
            trv.LabelEdit = False
            RaiseEvent AfterLabelEdit(trv, e)
        End Sub

        Private Sub trv_MouseCaptureChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles trv.MouseCaptureChanged
        End Sub

        Private Sub tmr_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmr.Tick
            Dim ev As New NodeLabelEditEventArgs(n)
            RaiseEvent BeforeLabelEdit(trv, ev)
            trv.LabelEdit = True
            n.BeginEdit()
            tmr.Enabled = False
            n = Nothing
        End Sub


        Private Sub trv_NodeMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles trv.NodeMouseClick
            If e.Node IsNot Nothing Then
                If e.Node.Equals(n) Then
                    tmr.Enabled = True
                    Exit Sub
                Else
                    n = e.Node
                    Exit Sub
                End If
            End If
            n = Nothing
        End Sub
    End Class
    Dim WithEvents supa As Renamer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        supa = New Renamer(TreeView1)
    End Sub
    Private Sub supa_AfterLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.NodeLabelEditEventArgs) Handles supa.AfterLabelEdit
        Beep()
    End Sub
    Private Sub supa_BeforeLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.NodeLabelEditEventArgs) Handles supa.BeforeLabelEdit
        e.Node.Text = "!!!"
    End Sub
End Class

глючить, правда, будет падла...

VAngel
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 81
Зарегистрирован: 13.01.2005 (Чт) 0:10
Откуда: 2:5030

Сообщение VAngel » 27.11.2006 (Пн) 16:31

Работает, нормально.... спасибо


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 88

    TopList