【发布时间】:2016-04-24 00:30:13
【问题描述】:
我在 autocad API 中使用 WPF 类型的用户控件。
将新节点调暗为 System.Windows.Controls.TreeViewItem newnode = mypalette2.treeview1.Items.Add(e.DBObject.GetType().ToString())
但它给出错误“整数值不能转换为treviewitem”
请帮忙!
【问题讨论】:
我在 autocad API 中使用 WPF 类型的用户控件。
将新节点调暗为 System.Windows.Controls.TreeViewItem newnode = mypalette2.treeview1.Items.Add(e.DBObject.GetType().ToString())
但它给出错误“整数值不能转换为treviewitem”
请帮忙!
【问题讨论】:
Add() 返回项目被添加到“Items”集合的索引,而不是 TreeViewItem 对象本身。使用索引从 Items 集合中获取 TreeViewItem:
未经测试的代码,但应该这样做(不要这样写 - 让它更干净;)):
Dim newnode As System.Windows.Controls.TreeViewItem newnode = mypalette2.treeview1.Items(mypalette2.treeview1.Items.Add(e.DBObject.GetType().ToString()))
理想情况下,您首先要检查以确保 Add() 没有返回 -1,这意味着 Add 操作失败。
【讨论】:
我更喜欢:
Dim newNode As New TreeNode
newNode.Text = e.DBObject.GetType().Name
newNode.Tag = e.DBObject.ObjectId
_treeView.Nodes.Add(newNode)
并且建议您使用实体的 ObjectId 设置 Tag 属性,否则您以后无法在代码中引用此项目(在树视图上)。
【讨论】: