树的动态上下文按钮的操作(在线急等)
在树的上下文中的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