treeview 右键菜单问题

vpqkkk 2009-10-22 04:54:00
'创建弹出菜单
treeMenu = New ContextMenuStrip()

'创建菜单项
Dim openLabel As New ToolStripMenuItem()
openLabel.Text = "本周工作汇报汇总"

'将菜单项加入弹出菜单
treeMenu.Items.AddRange(New ToolStripMenuItem() {openLabel})

'设置节点的右键菜单
TreeView1.ContextMenuStrip = treeMenu

我这样写出来的程序,运行后每个节点都能弹出右键菜单,但我只希望子节点能弹出来,应该怎么处理?
另外单击右键菜单的响应事件是哪一个?
...全文
195 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangpeixian 2009-11-06
  • 打赏
  • 举报
回复
Private Sub treeView1_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles treeView1.MouseClick
If e.Button = Windows.Forms.MouseButtons.Right Then
Dim clickedNode As TreeNode
clickedNode = Me.treeView1.GetNodeAt(e.Location)
Me.treeView1.SelectedNode = clickedNode
End If
End Sub

推荐用这个事件来处理单击右键菜单
快乐乔巴 2009-11-06
  • 打赏
  • 举报
回复
Point sPoint = new Point(e.X, e.Y);
这一行可以去掉 晕死 写了居然没用。。
或者TreeNode node = this.treeView1.GetNodeAt(e.X, e.Y);
改成TreeNode node = this.treeView1.GetNodeAt(sPoint);
喝口水去~ 头昏~
快乐乔巴 2009-11-06
  • 打赏
  • 举报
回复
在MouseDown中写 判断就可以了 帮你写个
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
Point sPoint = new Point(e.X, e.Y);
if (e.Button == MouseButtons.Right)
{
TreeNode node = this.treeView1.GetNodeAt(e.X, e.Y);
if (treeView1.Nodes.IndexOf(node) != -1)
{
this.treeView1.SelectedNode = node;
treeView1.ContextMenuStrip = this.contextMenuStrip1;
}
else
{
treeView1.ContextMenu = null;
}
}
else
{
treeView1.ContextMenu = null;
}
}
vpqkkk 2009-11-06
  • 打赏
  • 举报
回复
只有子节点弹出右键菜单的问题已解决

现在是怎么触发右键菜单事件,下面这样好像不行啊:
Private Sub treeMenu_OnClick()
.........
End Sub
古今多少事 2009-11-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 vpqkkk 的回复:]

可能我没说清楚我的需求
右键菜单已经可以弹出来了

现在我是指,当点右键菜单中的"本周工作汇报汇总"这一项时,我要做一系列对datagrid的操作
但是我现在点"本周工作汇报汇总"时,什么都做不了,也就是说,我需要一个像treeView1_MouseDown,botton1.click这样的函数名,我那一系列对datagrid的操作应该写在什么函数下
[/Quote]
使用AddHandler关联事件试试。
vpqkkk 2009-11-06
  • 打赏
  • 举报
回复

可能我没说清楚我的需求
右键菜单已经可以弹出来了

现在我是指,当点右键菜单中的"本周工作汇报汇总"这一项时,我要做一系列对datagrid的操作
但是我现在点"本周工作汇报汇总"时,什么都做不了,也就是说,我需要一个像treeView1_MouseDown,botton1.click这样的函数名,我那一系列对datagrid的操作应该写在什么函数下
vpqkkk 2009-11-06
  • 打赏
  • 举报
回复
?
threenewbee 2009-10-22
  • 打赏
  • 举报
回复
(1)可以加判断
If Not(TreeView1.SelectedNode.Parent Is Nothing) Then
xxx
End If
(2)
OnClick

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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