通过Menu的Menus动态生成TreeView的Nodes,但是如何做到Menu和TreeView的事件同步呢?

Seeko0 2005-06-08 09:51:23
一窗体中包含一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);
}
}

}
...全文
153 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Seeko0 2005-07-02
  • 打赏
  • 举报
回复
还是靠自己了,思路事实自定义类继承于MenuItem和TreeNode,并附加响应的属性,以供互相调用
Alden 2005-06-29
  • 打赏
  • 举报
回复
高人来解决一下
sam_summer 2005-06-29
  • 打赏
  • 举报
回复
试试用焦点绑定
Seeko0 2005-06-19
  • 打赏
  • 举报
回复
up
Seeko0 2005-06-09
  • 打赏
  • 举报
回复
请大家给点意见啊,总要找个理由把这个帖子结了吧
itmingong 2005-06-08
  • 打赏
  • 举报
回复
友情帮顶
xzhy80 2005-06-08
  • 打赏
  • 举报
回复
我试过两个绑定一个数据源可以互动的
不知道两个不同的控件可不可以
xzhy80 2005-06-08
  • 打赏
  • 举报
回复
up
Seeko0 2005-06-08
  • 打赏
  • 举报
回复
请高手指点思路

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧