首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

树的动态前后文按钮的操作(在线急等)

2011-12-17 
树的动态上下文按钮的操作(在线急等)在树的上下文中的ToolStripMenuItem增加项中动态增加了DropDownItems。

树的动态上下文按钮的操作(在线急等)
在树的上下文中的ToolStripMenuItem   增加项中动态增加了DropDownItems。在这些动态增加的项中。我如何能获得是点击的哪个动态项了。然后来触发不同的事件处理过程了。
以下为我:动态增加项的代码。
void   DocMenu_Opening(object   sender,   System.ComponentModel.CancelEventArgs   e)
                {
                        if   (MyTreeView   !=   null)//判断树存在
                        {
                                mySelectedNode   =   MyTreeView.SelectedNode;
                                Selection   sele   =   (Selection)mySelectedNode.Tag;
                                if   (sele   ==   null   ||   sele.TypeFlag   ==   "@TOPNODE ")
                                {
                                        mySelectedNode.ContextMenuStrip   =   new   ContextMenuStrip();
                                }
                                else//不是TOPNODE结点的时候
                                {
                                        #region   增加按扭上下文的判断
                                        string   NodeObject   =   sele.SelectionValue.ToString();//取得全局定义变量的字符串组合
                                        if   (!(sele.Tag   is   DataRow[]))   return;
                                        string   Oder   =   sele.Container[ "ODER "].ToString();
                                        if   (string.IsNullOrEmpty(Oder))   return;

                                        DataRow[]   rs   =   (DataRow[])sele.Tag;

                                        foreach   (DataRow   dr   in   rs)
                                        {
                                                int   SubOder   =   int.Parse(dr[ "ODER "].ToString());


                                                if   ((int.Parse(Oder)   ==   SubOder)   ||   (int.Parse(Oder)   ==   SubOder   -   1))//增加本结点与下级结点
                                                {
                                                        string   Description   =   dr[ "DESCRIPTION "].ToString();//增加的种类
                                                        if   (!string.IsNullOrEmpty(Description))
                                                        {
                                                                ToolStripMenuItem   addTool   =   this.DocMenu.Items[0]   as   ToolStripMenuItem;
                                                                addTool.Click   -=   new   EventHandler(addTool_Click);
                                                                ToolStripMenuItem   subaddTool   =   new   ToolStripMenuItem();
                                                                subaddTool.Text   =   "增加 "   +   Description;
                                                                subaddTool.Click   +=   new   EventHandler(addTool_Click);
                                                                addTool.DropDownItems.Add(subaddTool);
                                                        }
                                                }
                                        }
                                        this.GetAttributes(NodeObject);//解析获取定义的全局变量的字符串


                                        #endregion
                                        mySelectedNode.ContextMenuStrip   =   this.DocMenu;//增加上下文  
                                }

                        }
                }


事件处理的代码为:
        #region   增加节点
                void   addTool_Click(object   sender,   EventArgs   e)
                {
                        CanAdd();
                }
                public   virtual   void   CanAdd()
                {
                        MyTreeView.SelectedNode   =   mySelectedNode;
                        if   (CheckCanDo( " ",   " ",   " "))
                        {
                                object   obj   =   Yqun.Services.Agent.Call(ChargeCode,
                                                                        new   object[]   {   XmlSchema( "TREEADD ",   NodeID,   NodeCode)   });
                                try
                                {
                                        int   i   =   System.Convert.ToInt32(obj);
                                        if   (i   ==   1)
                                        {
                                                Yqun.Client.BizUI.FrameManager.ShowInformation( "增加成功 ");
                                        }
                                }
                                catch   {   }


                                finally
                                {
                                        //MyTreeView.Refresh();
                                        //MyTreeView.CollapseAll();

                                }
                        }
                }
                #endregion
我改如何判断了?请高手指点思路

[解决办法]
动态添加的项也应该有名称的,你根据名称可以判断的
[解决办法]
.NET中的高级树控件的源代码,附翻译后的文章

http://bbs.msproject.cn/default.aspx?g=posts&t=299


热点排行