Как добавить больше значений в класс TreeNode в C # - PullRequest
7 голосов
/ 22 марта 2010

Класс TreeNode имеет

Текстовое имя тега

Мне нужно присвоить больше значений классу TreeNode, например float1, float2, ... float6.

Как я могу это сделать ??? Пожалуйста, помогите.

Thx, Caslav

Ответы [ 4 ]

7 голосов
/ 22 марта 2010

Вы можете создать новый класс, который наследует TreeNode. Для каждого значения, которое вы хотите сохранить в treenode, создайте свойство для этого значения. При работе с Treeview просто приведите TreeNode к вашему пользовательскому классу TreeNode.

Пример:

public class JobTreeNode : TreeNode {

    private int intField1;

    public int Field1 {
        get {
            return intField1;
        }
        set {
            intField1 = value;
        }
    }
}

Использование (добавлено после комментариев)

// Add the node
JobTreeNode CustomNode = new JobTreeNode();
CustomNode.Text = "Test";
CustomNode.Field1 = 10
treeView1.Nodes.add(CustomNode);


// SelectedNode 
((CustomNode)(treeView1.SelectedNode)).Field1;
5 голосов
/ 24 марта 2010

Свойство Tag TreeNode является «объектом». Разве вы не можете просто хранить там свои данные, используя какой-то класс данных?

1 голос
/ 22 марта 2010

Вы можете создать легкий класс для хранения вашего float1..6 и поместить экземпляр в свойство Tag.

В качестве альтернативы, вы можете использовать Dictionary<TreeNode, FloatsClass> или, возможно, использовать 6 отдельных Dictionary<TreeNode, float>.

Обратите внимание, что у dotNet 4 появился новый тип Tuple<A,B,C,...>, который немного облегчает подобные ситуации.

0 голосов
/ 05 июня 2019

Вы можете иметь:

class TreeNodeProperties
{
  public float Float1 { get; set;}
  public float Float2 { get; set;}
  public float Float3 { get; set;}
  public float Float4 { get; set;}
  public float Float5 { get; set;}
  public float Float6 { get; set;}
}

Затем установите свойство Tag на TreeNode:

var properties = new TreeNodeProperties()
{
  Float1 = 10,
  Float2 = 20,
  Float3 = 30,
  Float4 = 40,
  Float5 = 50,
  Float6 = 60
}
myTreeNode.Tag = properties;

Чтобы прочитать свойства:

var nodeproperties = TreeViewMyTree.SelectedNode.Tag as TreeNodeProperties;
MessageBox.Show("Float5: "+nodeproperties.Float5);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...