一窗体中包含一Menu控件和一TreeView控件,我通过Menu的Menus动态生成TreeView的Nodes,但是如何做到Menu和TreeView的事件同步呢?即点击Menu中子项,同时定位到TreeView的Node子项,反之点击TreeView的节点执行相应Menu中MenuItem的事件,请高手赐教,感谢! 生成代码如下:
/// <summary>
/// 根据Menu创建TreeView,如何将树的点击事件与Menu的点击事件挂钩呢?
/// </summary>
void BuildTreeView()
{
            //正则表达式,去掉MenuItem.Text中包含的(&[A-Z])字符
Regex r=new Regex(@"\(\&[a-z]\)",RegexOptions .IgnoreCase );
this.treeView1.Nodes.Clear();
foreach(MenuItem item in this.mainMenu1 .MenuItems )
{
TreeNode node =new TreeNode();
node.Text =item.Text ;
                
                //去掉MenuItem中可能存在的分隔符
if(item.Text =="-")
continue;
SettingNodeText(node);
this.treeView1.Nodes.Add(node);
if(item.IsParent )
{
node.ImageIndex=1;
node.SelectedImageIndex =2;

CreateTree(item,node);
}
    }
}
        /// <summary>
        /// 清除MenuItem.Text中包含的(&[A-Z])字符
        /// </summary>
        /// <param name="node"></param>
void SettingNodeText(TreeNode node)
{
node.Text =r.Replace(node.Text ,"");
}        /// <summary>
        /// 创建treeView.nodes
        /// </summary>
        /// <param name="item"></param>
        /// <param name="nodes"></param>
void CreateTree(MenuItem item,TreeNode nodes)
{
foreach(MenuItem it in item.MenuItems )
{
if(it.Text =="-")
continue;
TreeNode node =new TreeNode();
node.Text =it.Text ;
SettingNodeText(node);
nodes.Nodes.Add(node);
if(it.IsParent )
{
nodes.ImageIndex=1;
nodes.SelectedImageIndex =2;
CreateTree(it,node); 
}
}

}