【问题标题】:VB.NET 2010 TreeviewVB.NET 2010 树视图
【发布时间】:2018-07-10 07:22:30
【问题描述】:

我有一个带有 Treeview 控件的表单,我务实地添加了第一个节点,当我添加第二个节点时,第一个节点被自动选中!如何阻止它,除非我选择它,否则我不需要选择任何节点。

我使用的代码:

        Dim Scr As New TreeNode()
        Scr.Text = ObjScreen.ScreenDescription
        Scr.Tag =  ObjScreen
        Scr.SelectedImageIndex = 0
        Scr.ImageIndex = 0

        tvScreens.Nodes.Add(Scr)

【问题讨论】:

  • 我无法复制。你能提供你用来添加节点的代码吗?
  • 也许向我们展示您的代码,以便我们了解正在发生的事情?
  • TreeView 强烈不喜欢有一个未选择的节点,并且在获得焦点时总是会自行选择一个。第一个,除非您通过分配 SelectedNode 属性来说服它。有点必要的邪恶,因为蓝色突出显示有双重职责,它显示 TreeView 具有焦点 并且 指示当前节点。它没有办法故意取消选择任何内容,因此您可以停止寻找该解决方案。
  • 我尝试过以 .NET 2.0 和 4.6.1 为目标,但都无法在其中复制。
  • 要 Repro,创建一个带有树视图的表单,然后打开一个表单以从中获取数据,关闭该表单后将节点添加到树视图,重复两次

标签: vb.net vb.net-2010


【解决方案1】:

添加这个:

    Dim Activator as boolean
    Private Sub TreeView_BeforeSelect(sender As Object, e As TreeViewCancelEventArgs) Handles TreeView.BeforeSelect
    If Activator Then
        e.Cancel = True
    End if
    End Sub

只需在添加节点的代码开头将 activator 设置为 true,并在末尾设置为 false。

【讨论】:

  • 我不是反对者,但请记住,此代码不允许 OP 选择 any 节点。当 OP 添加新节点时,您可能想要添加仅设置 e.Cancel 的内容。
  • True true,一个布尔变量,当他添加东西时应该这样做。
  • 其实你甚至可以将其缩短为:e.Cancel = Activator :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 2013-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多