Легкая привязка объекта к Узлу Treeview

Первое число обычно упоминается как номер основной версии. Это в основном используется для обозначения существенных изменений между сборками (т.е. когда Вы добавляете много новых опций, Вы увеличиваете основную версию). Компоненты с отличающимися основными версиями от того же продукта, вероятно, не совместимы.

следующее число является номером вспомогательной версии. Это может представить некоторые новые возможности, или много исправлений ошибок или маленьких изменений архитектуры. Компоненты от того же продукта, которые отличаются номером вспомогательной версии, могут или не могут сотрудничать, и вероятно не был должен.

следующее обычно называют номером сборки. Это может ежедневно увеличиваться, или с каждой "выпущенной" сборкой, или с каждой сборкой вообще. Могут быть только небольшие различия между двумя компонентами, кто отличается только номером сборки и обычно может работать хорошо вместе.

заключительное число обычно является числом пересмотра. Часто времена, это используется автоматическим процессом сборки, или когда Вы делаете "одноразовые" холостые сборки для тестирования.

то, Когда Вы увеличиваете свои номера версий, ваше дело, но они всегда должны , инкремент или остается тот же . Вы можете иметь всю долю компонентов тот же номер версии, или только увеличить номер версии на измененных компонентах.

11
задан David Basarab 10 December 2009 в 13:28
поделиться

3 ответа

imho у вас есть несколько стратегий:

  1. вставьте объект любого типа в свойство Tag любого узла: downside: you Придется вернуть его обратно в его «родную форму», когда вы извлечете его, чтобы использовать: если эта «собственная форма» не является чем-то, кроме типа «Object.

  2. подкласс TreeNode, и добавить общедоступные поля Public Properties , или что-то еще, для ваших объектов ... или даже List ... ... или что-то еще, что вам нужно связать с узлом.

  3. предполагая, что ваши объекты относятся к одному типу, вы можете создать словарь типа: Dictionary , создайте его экземпляр и, при необходимости, сохраните TreeNode и связанный с ним объект (ы) таким образом как пару ключ / значение.

Стратегия № 1,и №3 имеют то преимущество, что вы можете хранить связанный объект ТОЛЬКО по мере необходимости. Стратегия №2: больше подходит для случая, когда вы ожидаете, что каждый TreeNode будет иметь связанный объект (ы).

Конечно, с помощью stragies # 1 и №3, вам нужно будет проверить во время выполнения на наличие или отсутствие объекта, связанного с конкретным узлом.

Стратегия №1 - это простой тест: если свойство тега узла равно нулю: вы знаете нет объекта: если не null ... и может быть несколько типов объектов, хранящихся в поле Tag ... тогда вам придется вытащить объект Tag и убедиться, что это правильный тип, как в: (в следующем примере предполагается, что общедоступный класс «Class1» был назначен тегу первого узла в TreeView:

TreeNode thisNode = theTreeView.Nodes[0];
if (((thisNode.Tag != null) && (thisNode.Tag is Class1))) ... handle the object ...

Стратегия №3 немного проще, так как вы можете просто оценить, содержит ли Dictionary узел в качестве ключа.

18
ответ дан 3 December 2019 в 04:52
поделиться

Вы ищете что-то вроде свойства Tag на TreeNodes? Он может содержать любой объект.

http://msdn.microsoft.com/en-us/library/system.windows.forms.treenode.tag.aspx

3
ответ дан 3 December 2019 в 04:52
поделиться

В этой статье MSDN есть хорошая информация, например:

class myTreeNode : TreeNode
{
   public string FilePath;

   public myTreeNode(string fp)
   {
      FilePath = fp;
      this.Text = fp.Substring(fp.LastIndexOf("\\"));
   }
}
2
ответ дан 3 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: