在树的上下文中的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
我改如何判断了?请高手指点思路
以下为我:动态增加项的代码。
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
我改如何判断了?请高手指点思路
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货