请教高手!!!! 动态触发对应的菜单的点击事件 我的树是根据MDI菜单的层次结构生成的,怎么样让点击树的对应节点时触发对应的菜单的点击事件?在C#中 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 function RoleTree_NodeChedked(treeId, nodeId, bChecked) { var node = igtree_getNodeById(nodeId); if(node.hasChildren()) { var children = node.getChildNodes(); for(var i=0;i<children.length;i++) { children[i].setChecked(bChecked); } } //else { var id = node.getTag(); if(bChecked) { if(RoleIDs.indexOf(';' + id + ';') < 0) { RoleIDs += id + ';'; } } else { if(RoleIDs.indexOf(';' + id + ';') >= 0) { RoleIDs = RoleIDs.replace(';' + id + ';',';'); } } } } 生成树的时候,将树节点的Node的Tag属性设置为对应菜单项,然后点击时,获取这个Tag属性,转化成ToolStripMenuItem然后就可以用下面的代码触发:ToolStripMenuItem.PerformClick(); 楼上基本正解,可以把tag属性设置为工具条的Name 非得要灵活可用的话,我建议用反射.菜单的Tag属性记录程序集+窗体名称.如 "Microsoft.CRM.FormVipInfo".生成树的时候也把相应的Tag给树节点.双击树节点的时候读取Tag,用反射创建窗体.//用反射创建form窗体实例。//假设node为当前点击的节点if (node.Tag != null){ string assStr = node.Tag.ToString(); Assembly asm = Assembly.Load(assStr.Substring(0, assStr.LastIndexOf(".")));//取得程序集名 object frmObj = asm.CreateInstance(assStr);//程序集+form的类名。} C# release发行,别的电脑不能运行 请问如何用反射创建结构体的实例 我的VS怎么没有新建web站点的选项 更改开始文字. 如何让dataGrid不能选定多条记录? 只有能行,马上给分88 如何取一个html字符串中a标签的值 C#编译器问题,高手求解 水晶报表的布局字段线条之类是否可以全部用代码全部在运行时生成? 在同步通讯中如何获取对方的IP地址 新手SQL语句求助!!! 如何在程序中使用相对路径(winform)
{
var node = igtree_getNodeById(nodeId);
if(node.hasChildren())
{
var children = node.getChildNodes();
for(var i=0;i<children.length;i++)
{
children[i].setChecked(bChecked);
}
}
//else
{
var id = node.getTag();
if(bChecked)
{
if(RoleIDs.indexOf(';' + id + ';') < 0)
{
RoleIDs += id + ';';
}
}
else
{
if(RoleIDs.indexOf(';' + id + ';') >= 0)
{
RoleIDs = RoleIDs.replace(';' + id + ';',';');
}
}
}
}
然后就可以用下面的代码触发:
ToolStripMenuItem.PerformClick();
生成树的时候也把相应的Tag给树节点.双击树节点的时候读取Tag,用反射创建窗体.
//用反射创建form窗体实例。
//假设node为当前点击的节点
if (node.Tag != null)
{
string assStr = node.Tag.ToString();
Assembly asm = Assembly.Load(assStr.Substring(0, assStr.LastIndexOf(".")));//取得程序集名
object frmObj = asm.CreateInstance(assStr);//程序集+form的类名。
}