gpt4 book ai didi

c# - 将属性添加到 TreeNode

转载 作者:太空宇宙 更新时间:2023-11-03 22:20:39 25 4
gpt4 key购买 nike

我有一个使用 Treeview 的网页。在 TreeView 中是节点,我使用 Text 和 Value 属性,但我还需要一个。我需要一个名为 IsFile 的 bool 属性。

我创建节点并以编程方式将它们添加到树中。我有一个名为 NavTreeNodes 的类,它继承了 TreeNode 类并为这个 bool 值添加了广告。

public class NavTreeNode : TreeNode
{
private bool _IsFile;

public bool IsFile
{
get { return _IsFile; }
set { _IsFile = value; }
}

public NavTreeNode()
{ }
}

当我创建一个新的 TreeNode 时,我使用了这个类。一切正常,直到我尝试从 TreeView 函数的 SelectedNodeChanged 中的 TreeView 中获取数据。

protected void treeview_Navigation_SelectedNodeChanged(object sender, EventArgs e)
{
TreeNode node = treeview_Navigation.SelectedNode;
NavTreeNode NNode = node as NavTreeNode;

Response.Write(NNode.IsFile.ToString());
}

我收到“未设置对象实例的对象引用”。当我尝试这个时出错。我什至无法使用此方法获取值或文本值。

最佳答案

创建包含您的值和 IsFile 属性的新类,并将其放入节点的 Value 属性中。

        [Serializable]
public class ValueAndIsFile {
[XmlAttribute]
public bool IsFile {get; set;}

[XmlAttribute]
public string Value { get; set; }
}

...

TreeNode nd = new TreeNode ();
ValueAndIsFile val = new ValueAndIsFile(){ IsFile = true, Value = yourValueObject};

nd.Value =SerializeToString(val);
treeView.Nodes.Add(nd);

....

protected void treeview_Navigation_SelectedNodeChanged(object sender, EventArgs e)
{
TreeNode node = treeview_Navigation.SelectedNode;
ValueAndIsFile val = DeserializeFromString<ValueAndIsFile>(node.Value);
Response.Write(val.IsFile.ToString());

}


public static string SerializeToString(object obj)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());

using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, obj);
return writer.ToString();
}
}

public static T DeserializeFromString<T>(string str)
{
XmlSerializer serializer = new XmlSerializer(typeof(T) );

using (StringReader reader =new StringReader(str) )
{
return (T)serializer.Deserialize(reader);
}
}

不确定序列化的解决方案是最好的,但它解决了问题

关于c# - 将属性添加到 TreeNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3204674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com