C# treeview右键菜单 设置技巧
2015-06-01 17:14
405 查看
http://www.cnblogs.com/imihiroblog/archive/2012/06/02/2531949.html
//在NodeMouseClick事件中 再将cms设定成treeview的cms. 这样点空,不会出现右键菜单.
//右键菜单
private void tv_Roots_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button != MouseButtons.Right) return;
if (e.Node.Parent == null || e.Node == null) return;
tv_Roots.SelectedNode = e.Node;
cmsRouts.Show(tv_Roots, e.X, e.Y);
}
//不同节点对应不同右键菜单的实现
用1个cms. 右键点击树节点时,根据节点类型生成cms的MenuItem项及点击事件
private void tvOneRoot_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button != MouseButtons.Right) return;
if (e.Node == null) return; //无节点
if (e.Node.Level == 0) return;
int nodeType = GetNodeTypeByGuid(e.Node.Name);
tvOneRoot.SelectedNode = e.Node;
InitcmsOneRout(nodeType);
cmsOneRout.Show(tvOneRoot, e.X, e.Y);
}
/// <summary>
/// 初始化cmsOneRoot 从nodetype
/// </summary>
/// <param name="nodetype"></param>
private void InitcmsOneRout(int nodetype)
{
cmsOneRout = new ContextMenuStrip();
if (nodetype == -1)
{
ToolStripMenuItem tmiEditRoutStation = new ToolStripMenuItem("编辑飞行站点");
tmiEditRoutStation.Click += new EventHandler(tmiEditRoutStation_Click);
cmsOneRout.Items.Add(tmiEditRoutStation);
ToolStripMenuItem tmiMoveRouteStation = new ToolStripMenuItem("更改位置");
tmiMoveRouteStation.Click += new EventHandler(tmiMoveRouteStation_Click);
cmsOneRout.Items.Add(tmiMoveRouteStation);
ToolStripMenuItem tmiDeleRouteStation = new ToolStripMenuItem("删除飞行站点");
tmiDeleRouteStation.Click += new EventHandler(tmiDeleRouteStation_Click);
cmsOneRout.Items.Add(tmiDeleRouteStation);
}
else if (nodetype == 0)
{
ToolStripMenuItem tmiEditRout = new ToolStripMenuItem("编辑飞行段属性");
tmiEditRout.Click += new EventHandler(tmiEditRout_Click);
cmsOneRout.Items.Add(tmiEditRout);
ToolStripMenuItem tmiDeleteRout = new ToolStripMenuItem("删除飞行段");
tmiDeleteRout.Click += new EventHandler(tmiDeleteRout_Click);
cmsOneRout.Items.Add(tmiDeleteRout);
}
else if (nodetype == 1)
{
}
else if (nodetype == 2)
{
}
else
{
}
}
void tmiEditRout_Click(object sender, EventArgs e)//编辑飞行段
{
string routId = tvOneRoot.SelectedNode.Name;
RouteParameter rp = GetRouteParaByGuid(routId);
FrmPointProperty frm = new FrmPointProperty(rp, 0, 1);
frm.OnRoutInfoUpdated += new FrmPointProperty.DelegateRouteInfoUpdated(frm_OnRoutInfoUpdated);
frm.ShowDialog();
}
//在NodeMouseClick事件中 再将cms设定成treeview的cms. 这样点空,不会出现右键菜单.
//右键菜单
private void tv_Roots_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button != MouseButtons.Right) return;
if (e.Node.Parent == null || e.Node == null) return;
tv_Roots.SelectedNode = e.Node;
cmsRouts.Show(tv_Roots, e.X, e.Y);
}
//不同节点对应不同右键菜单的实现
用1个cms. 右键点击树节点时,根据节点类型生成cms的MenuItem项及点击事件
private void tvOneRoot_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button != MouseButtons.Right) return;
if (e.Node == null) return; //无节点
if (e.Node.Level == 0) return;
int nodeType = GetNodeTypeByGuid(e.Node.Name);
tvOneRoot.SelectedNode = e.Node;
InitcmsOneRout(nodeType);
cmsOneRout.Show(tvOneRoot, e.X, e.Y);
}
/// <summary>
/// 初始化cmsOneRoot 从nodetype
/// </summary>
/// <param name="nodetype"></param>
private void InitcmsOneRout(int nodetype)
{
cmsOneRout = new ContextMenuStrip();
if (nodetype == -1)
{
ToolStripMenuItem tmiEditRoutStation = new ToolStripMenuItem("编辑飞行站点");
tmiEditRoutStation.Click += new EventHandler(tmiEditRoutStation_Click);
cmsOneRout.Items.Add(tmiEditRoutStation);
ToolStripMenuItem tmiMoveRouteStation = new ToolStripMenuItem("更改位置");
tmiMoveRouteStation.Click += new EventHandler(tmiMoveRouteStation_Click);
cmsOneRout.Items.Add(tmiMoveRouteStation);
ToolStripMenuItem tmiDeleRouteStation = new ToolStripMenuItem("删除飞行站点");
tmiDeleRouteStation.Click += new EventHandler(tmiDeleRouteStation_Click);
cmsOneRout.Items.Add(tmiDeleRouteStation);
}
else if (nodetype == 0)
{
ToolStripMenuItem tmiEditRout = new ToolStripMenuItem("编辑飞行段属性");
tmiEditRout.Click += new EventHandler(tmiEditRout_Click);
cmsOneRout.Items.Add(tmiEditRout);
ToolStripMenuItem tmiDeleteRout = new ToolStripMenuItem("删除飞行段");
tmiDeleteRout.Click += new EventHandler(tmiDeleteRout_Click);
cmsOneRout.Items.Add(tmiDeleteRout);
}
else if (nodetype == 1)
{
}
else if (nodetype == 2)
{
}
else
{
}
}
void tmiEditRout_Click(object sender, EventArgs e)//编辑飞行段
{
string routId = tvOneRoot.SelectedNode.Name;
RouteParameter rp = GetRouteParaByGuid(routId);
FrmPointProperty frm = new FrmPointProperty(rp, 0, 1);
frm.OnRoutInfoUpdated += new FrmPointProperty.DelegateRouteInfoUpdated(frm_OnRoutInfoUpdated);
frm.ShowDialog();
}
相关文章推荐
- C# Invoke
- C# 根据时间创建文件夹
- C# Rows.Remove() 和 DataRow.Delete() 的区别
- C#:代表(delegate)和事件(event) (转)
- C# DataAdapter.Update() 无法更新数据表中删除的数据行
- 通过configSource提高web.config配置灵活性
- mongo DB for C#
- c#的DateTime.Now函数详解
- C# 中引用dll类库时 “不可访问,因为它受保护级别限制”
- c# 调用打印机
- 找出C#代码中未使用的变量和函数
- C#泛型约束
- Illustrated C#2012--第一章节--C#和.NET Framework--进入Microsoft .NET
- c#中的resx文件出现未能找到具有某个名称的类型
- C#使用System.Environment操作系统环境变量的中文API
- C#6.0 VS2015
- 终于会用c#中的delegate(委托)和event(事件)了 [转]
- C#获取本机IP搜集整理7种方法
- C#中Split用法~
- C#--Web邮箱删除信件效果