1

WinFormにTreeViewがあり、TreeNodeのサブクラスと、各ノードに対して保存したいいくつかの追加の変数を使用しています。ユーザーは、コンテキストメニューを使用してツリーからノードを削除できます。

私ができるようにしたいのは、TreeNodeのRemoveメソッドを拡張して、ノードが削除される前にそこで追加の処理を実行できるようにすることです。これを行う方法はありますか?

明確にするために...

TreeNodeの既存のRemoveメソッドを拡張して、実際に削除する前にコードを実行できるようにする方法はありますか?

乾杯、

編集:私は実際にこれを行う必要がある方法は、代わりにthis.Remove()を呼び出す新しいメソッドでクラスを拡張することであると想定していますか?

編集2:これは私がやったことです。それが最善の方法ですか...

public partial class CustomTreeNode : TreeNode
{
    // My custom TreeNode vars
    public int UID;
    public int ParentUID;

    public CustomTreeNode(string nodeName) : base(nodeName)
    {
        // Set the tree node here
    }

    public void RemoveIt()
    {
        // Custom stuff
        System.Console.WriteLine("Deleted");

        base.Remove();
    } 

}
4

2 に答える 2

1

サブクラスでこれを試してください

public new void Remove() 
{ 
    //do your custom stuff

    base.Remove();  // calls the TreeNode Remove method
}

編集:新しい削除されたオーバーライドを追加

サブクラス オブジェクトを TreeNode として参照するときはいつでも、カスタムの Remove メソッドは呼び出されないことに注意してください。 new と override の違い

次のように、関数に別の名前を付けることもできます。

public void SuperRemove() 
{ 
    //do your custom stuff

    base.Remove();  // calls the TreeNode Remove method
}
于 2012-04-24T16:07:17.603 に答える
0

コンテキスト メニューからノードを削除しています。MenuItem_Click イベント ハンドラーに特別な処理を追加しないのはなぜですか? ノードの削除を呼び出す前に、そこで何でもできます。

于 2012-04-24T16:47:21.787 に答える