如何为list创建索引访问器?属性
本文关键字:访问 属性 索引 创建 list | 更新日期: 2023-09-27 18:03:27
示例如下:
/// <summary>
/// Collection of SednaTreeViewItems used to populate the SednaTreeView.
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public List<SednaTreeViewItem> TreeNodes
{
get { return treeNodes; }
set
{
ultraTree.Nodes.Clear();
treeNodes = value;
foreach (var item in treeNodes)
{
UltraTreeNode node = new UltraTreeNode(item.ValueMember, item.DisplayMember);
ultraTree.Nodes.Add(node);
}
if (treeNodes.Count() > 0)
ultraTree.ActiveNode = ultraTree.Nodes[0];
}
}
/// <summary>
/// SednaTreeViewItem that is currently selected in the SednaTreeView.
/// </summary>
public SednaTreeViewItem SelectedItem
{
get
{
if (ultraTree.SelectedNodes != null)
{
var node = ultraTree.SelectedNodes[0];
SednaTreeViewItem item = new SednaTreeViewItem(node.Key, node.Text);
return item;
}
else
return null;
}
set
{
ultraTree.ActiveNode = ultraTree.Nodes[value.ValueMember];
}
}
我想以这种方式使用我的控件。例如,有人想在运行时设置所选的树视图节点,我想这样做:
treeViewInvestors.SelectedItem = treeViewInvestor.TreeNodes[userIdKey];
其中userIdKey是一个在后台已经存在的唯一键
基本上,有一种方法来创建一个索引"[]"访问器为我的属性?
如果公开的节点集合属性是List(已经具有int类型的索引器),并且您需要另一种类型的索引器,那么您可以将treenode集合公开为具有其他类型索引器的List的子类:
public class NodeList : List<Node>
{
public TNode this[Key key]
{
get { return nodes.Where(n => n.Key == key).SingleOrDefault(); }
}
}
则可以通过两种索引
进行访问var nodeByKey = treeViewInvestor.TreeNodes[key];
var nodeByIndex = treeViewInvestor.TreeNodes[index].
实现索引器属性:
public SednaTreeViewItem this[int index]//or public T this[int index]
{
get { return ultraTree[index]; }
set { ultraTree[index] = value; }
}