我正在處理一些應用程序,它使用TreeView控件來表示業務對象。目前,業務對象和TreeNode之間的鏈接通過TreeNode的Tag屬性來維護。我對此並不滿意,因爲我認爲這個鏈接不夠「緊」。例如,可能有沒有業務對象的TreeNode對象,我也想根據業務對象狀態更新TreeNode圖像。因此,我得出的樹節點用自己獨特的樹節點類:重寫基類的方法,屬性等有多遠.net TreeNode class
class ActionTreeNode : TreeNode
{
private Action mAction;
public Action Action
{ get ... }
public ActionTreeNode(Action action)
: base()
{
if (action == null) throw new ArgumentNullException("action", "Paramter action must not be null.");
mAction = action;
}
public void UpdateState()
{
switch (mAction.ActionState)
{
case ActionState.Passed:
SelectedImageIndex = 3;
ImageIndex = 3;
break;
case ActionState.Failed:
SelectedImageIndex = 2;
ImageIndex = 2;
break;
...
}
return;
}
}
有了這個最小的方法,我要投我每次調用返回一個TreeNode對象像基類的屬性或方法「時間(ActionTreeNode)MYNODE .Parent」。解決方法是覆蓋/覆蓋每個方法或屬性並返回ActionTreeNode類型的對象。 您認爲,採取最低限度的方法更合適還是您會努力重新實現所有方法,以避免投射屬性?謝謝。
我也喜歡這個版本。也許應該重寫字符串作爲參數的ActionTreeNode ctor。 – crauscher 2009-05-05 10:00:48