社区
C#
帖子详情
关于contextMenu(上下文菜单)的怪问题
netcoder
2004-10-27 10:56:21
一个TreeView 控件,一个contextMenu
想实现这样比较常见的功能:
只有用户用鼠标右键点击(即选择某一节点)树上某一节点时,才弹出菜单
点击数的空白处均不出现菜单
...全文
348
11
打赏
收藏
关于contextMenu(上下文菜单)的怪问题
一个TreeView 控件,一个contextMenu 想实现这样比较常见的功能: 只有用户用鼠标右键点击(即选择某一节点)树上某一节点时,才弹出菜单 点击数的空白处均不出现菜单
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xu123
2004-10-27
打赏
举报
回复
这是我今天写的一个测试用的:
#region TreeView的事件操作
private void OnTreeViewAfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
switch(e.Node.Text)
{
case "Folder":
MessageBox.Show(this,e.Node.Text);
break;
case "Friend":
str_flag ="f";
break;
case "Relative":
str_flag ="r";
break;
case "":
str_flag="";
break;
default:
str_flag="";
break;
}
}
private void OnTreeViewMenuMouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Right)
{
switch(str_flag)
{
case "f":
case "r":
this.contextMenu1.Show(this.treeView1,(new Point(e.X,e.Y)));
break;
default:
break;
}
}
}
#endregion
北京的雾霾天
2004-10-27
打赏
举报
回复
添加如下的代码就可以了:
private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (treeView1.GetNodeAt(e.X,e.Y)!=null)
{
this.treeView1.ContextMenu = this.contextMenu1;
}
else
{
this.treeView1.ContextMenu = null;
}
}
jkflyfox
2004-10-27
打赏
举报
回复
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
TreeNode tn = this.treeView1.GetNodeAt(e.X, e.Y);
if (tn != null)
{
this.contextMenu.Show(this.treeView1,e.Location);
}
}
}
hanbinghai
2004-10-27
打赏
举报
回复
在MouseDown事件里
TreeNode tn =this.tree .GetNodeAt(e.X,e.Y) as TreeNode;
if(tn == null)
{
for(int i=0;i<this.tree.ContextMenu.MenuItems.Count;i++)
{
this.tree.ContextMenu.MenuItems[i].Visible = false;
}
return ;
}
else
{
//选中当前节点
this.tree .SelectedNode = tn;
for(int i=0;i<this.tree.ContextMenu.MenuItems.Count;i++)
{
this.tree.ContextMenu.MenuItems[i].Visible = true;
}
}
trnbo
2004-10-27
打赏
举报
回复
You can display a context menu when a user right-clicks on a node by listening to the TreeView's MouseUp event as shown below:
[C#]
private void treeView1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Right)
{
Point ClickPoint = new Point(e.X,e.Y);
TreeNode ClickNode = treeView1.GetNodeAt(ClickPoint);
if(ClickNode == null) return;
// Convert from Tree coordinates to Screen coordinates
Point ScreenPoint = treeView1.PointToScreen(ClickPoint);
// Convert from Screen coordinates to Formc coordinates
Point FormPoint = this.PointToClient(ScreenPoint);
// Show context menu
contextmenu.MenuItems.Clear();
contextmenu.MenuItems.Add("Item1");
contextmenu.MenuItems.Add("Item2");
contextmenu.Show(this,FormPoint);
}
}
trnbo
2004-10-27
打赏
举报
回复
http://www.syncfusion.com/FAQ/WinForms/FAQ_c91c.asp#q1097q
Point ClickPoint = new Point(e.X,e.Y);
TreeNode ClickNode = treeView1.GetNodeAt(ClickPoint);
//save ClickNode somewhere
netcoder
2004-10-27
打赏
举报
回复
是不是应该在treeview的mouse_down 事件里判断呢?
如果是,那怎么让contextMenu不弹出来呢?
netcoder
2004-10-27
打赏
举报
回复
帮帮忙吧
netcoder
2004-10-27
打赏
举报
回复
多谢了
结贴
kissallmm
2004-10-27
打赏
举报
回复
private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (treeView1.GetNodeAt(e.X,e.Y)!=null)
{this.treeView1.ContextMenu = this.contextMenu1;}
else{this.treeView1.ContextMenu = null;}
}
heiding
2004-10-27
打赏
举报
回复
同意
android
ContextMenu
上下文
菜单
android
ContextMenu
上下文
菜单
ContextMenu
上下文
菜单
Demo
ContextMenu
上下文
菜单
简单使用,文章地址:http://write.blog.csdn.net/postedit/78110175
ContextMenu
上下文
选项
菜单
,长按后跳出
菜单
.rar
ContextMenu
上下文
选项
菜单
,长按后跳出
菜单
.rar
ContextMenu
上下文
选项
菜单
,长按后跳出
菜单
_android源码.zip
ContextMenu
上下文
选项
菜单
,长按后跳出
菜单
_android源码
安卓Android源码——
ContextMenu
上下文
选项
菜单
,长按后跳出
菜单
.zip
安卓Android源码——
ContextMenu
上下文
选项
菜单
,长按后跳出
菜单
.zip
C#
110,532
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章