【问题标题】:How can you modify the label (Text property) or a TreeNode in .NET如何在 .NET 中修改标签(文本属性)或 TreeNode
【发布时间】:2011-02-22 15:03:14
【问题描述】:

我有一个带有一堆节点的 TreeView。我有一些应该修改标签的代码,但它没有效果。当我在调试器中单步执行时,我看到 .Text 属性具有正确的值,但它没有反映在 GUI 中。我不确定我做错了什么。代码如下:

Public Class MyClass
    Inherits TreeNode

    Public Property Record As SomeTypeThatDefinesADataField
        Get ...
        Set ...
    End Property

    Public Sub ChangeLabel()
        If Me.TreeView IsNot Nothing Then
            Me.TreeView.LabelEdit = True
            If Not Me.IsEditing Then
                Me.BeginEdit()
            End If
            Me.Text = Me.Record.Data("Name")
            Me.EndEdit(False)
            Me.TreeView.LabelEdit = False
        End If 
    End Sub
End Class

Public Class MyClassThatContainsTheTreeView

    Private Sub trvRecords_AfterLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.NodeLabelEditEventArgs) Handles trvRecords.AfterLabelEdit
        Me.treeView.Refresh()
    End Sub

End Class

【问题讨论】:

    标签: .net vb.net winforms treeview treenode


    【解决方案1】:

    跳过LabelEdit 圈是没有意义的,只需更改Text 属性即可。在调试器中看到属性更改但在屏幕上看不到的典型诊断是您获得了错误的对象引用。更改不可见的副本而不是用户正在查看的副本。完全不清楚您是如何在此代码中获得 TreeView 或 Form 引用的,请查看您的代码。

    【讨论】:

    • TreeView 是 TreeNode 的一个属性:link。除非框架中存在错误,否则我认为我们可以假设这是正确的参考。我的类继承自 TreeNode。我知道我正在查看正确的 TreeNode,因为我可以看到它具有我期望它保持的值。您指的是哪个表格参考?我尝试的第一件事是简单地将 .Text 属性设置为我想要的。它没有用,我开始四处寻找人们似乎提到的所有其他技术。
    • 是的,但不清楚的是,这个树节点的TreeView实际上是指用户正在查看的树视图。显然不是。
    • 我真的认为这是同一个对象。在调试器中的快速检查表明 SelectedNode 和 RootNode 属性确实是我所期望的。我已经在上面显示的两种方法中确认了这一点。有什么我不明白的吗?您是否建议我有一些其他 TreeView 具有相同的内容,而我无意中抓取和修改了这些内容?
    • 它通常是表单的另一个实例,尤其是在使用线程的 VB.NET 代码中。一个不可见的,因为它的 Show 方法从未被调用过。
    • 您好,感谢您的帮助。原来我们都在叫错树。在我完成所有工作之后,在我之前编写此代码的笨蛋显然已将文本更改回其原始值,但我没有想过继续单步执行该代码,因为我认为它不相关。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多