NXの二次開発-UIStyler-ツリー(ツリー)アプリケーション(2)

NXの二次開発-UIStyler-Tree(ツリー)アプリケーション(1)では、UIStyler-Treeの加算関数について説明し、編集関数と削除関数を書き留めました。

1つ目は削除機能です。

a。ノードを削除します。

 _ObjectsTree.DeleteNode(node);

現在のノードと子ノードが削除されます。

b。ツリー全体を削除する場合は、次のコードを使用します。

                    while(_ObjectsTree.RootNode!=null)
                    {
                        _ObjectsTree.DeleteNode(_ObjectsTree.RootNode);
                    }
                    _ObjectsTree.Redraw(true);

次に、編集機能があります。

a。次の行のコメントを解除します。


                //_ObjectsTree.SetOnEndLabelEditHandler(new NXOpen.BlockStyler.Tree.OnEndLabelEditCallback(OnEndLabelEditCallback));

                _ObjectsTree.SetOnEditOptionSelectedHandler(new NXOpen.BlockStyler.Tree.OnEditOptionSelectedCallback(OnEditOptionSelectedCallback));

                _ObjectsTree.SetAskEditControlHandler(new NXOpen.BlockStyler.Tree.AskEditControlCallback(AskEditControlCallback));

                _ObjectsTree.SetOnMenuHandler(new NXOpen.BlockStyler.Tree.OnMenuCallback(OnMenuCallback)); ;

                _ObjectsTree.SetOnMenuSelectionHandler(new NXOpen.BlockStyler.Tree.OnMenuSelectionCallback(OnMenuSelectionCallback)); ;

                //_ObjectsTree.SetIsDropAllowedHandler(new NXOpen.BlockStyler.Tree.IsDropAllowedCallback(IsDropAllowedCallback));;

                //_ObjectsTree.SetIsDragAllowedHandler(new NXOpen.BlockStyler.Tree.IsDragAllowedCallback(IsDragAllowedCallback));;
 public Tree.EditControlOption OnEditOptionSelectedCallback(NXOpen.BlockStyler.Tree tree, NXOpen.BlockStyler.Node node, int columnID, int selectedOptionID, string selectedOptionText, Tree.ControlType type)
        {
            if(tree==_ObjectsTree)
            {
                //type = Tree.ControlType.ComboBox;
                return Tree.EditControlOption.Accept;
            }
            else
            {
                return Tree.EditControlOption.Reject;
            }
        }

        public Tree.ControlType AskEditControlCallback(NXOpen.BlockStyler.Tree tree, NXOpen.BlockStyler.Node node, int columnID)
        {           
            return Tree.ControlType.ComboBox;
        }

        public void OnMenuCallback(NXOpen.BlockStyler.Tree tree, NXOpen.BlockStyler.Node node, int columnID)
        {
            TreeListMenu treeListMenu = tree.CreateMenu();          
            treeListMenu.AddMenuItem(1, "删除");
            treeListMenu.AddMenuItem(2, "编辑");
            tree.SetMenu(treeListMenu);
        }

        public void OnMenuSelectionCallback(NXOpen.BlockStyler.Tree tree, NXOpen.BlockStyler.Node node, int menuItemID)
        {          
            if (menuItemID == 1)
            {
                _ObjectsTree.DeleteNode(node);
                NXUtilityTools.AllObjectsUnhightlight();
            }
            if(menuItemID==2)
            {
                string[] stringArray = new string[2] {"1111","2222"};
                _ObjectsTree.SetEditOptions(stringArray,1);
            }
           
        }

        //public Node.DropType IsDropAllowedCallback(NXOpen.BlockStyler.Tree tree, NXOpen.BlockStyler.Node node, int columnID, NXOpen.BlockStyler.Node targetNode, int targetColumnID)
        //{
        //}

次の機能を実現します。

1.右クリックしてメニューを追加します。

2.ノードを左クリックして、combox編集ボックスをポップアップします

 

おすすめ

転載: blog.csdn.net/yang19861007/article/details/109271308