右键弹出菜单的菜单项不能动态改变?
在treeview上使用右键菜单,需工具选择的项目disable部分菜单项,但没作用,难道右键弹出菜单的菜单项不能动态改变?
Private Sub device_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
If e.Button = MouseButtons.Right Then
Dim thispoint As New Point(e.X, e.Y)
If Me.TreeView1.SelectedNode.ImageIndex = 1 Then
Me.TreeView1.ContextMenu.MenuItems(1).Enabled = False
End If
Me.TreeView1.ContextMenu.Show(sender, thispoint)
Else
End If
End Sub
问题点数:50、回复次数:5Top
1 楼bigrongshu(Life is full of possibilities)回复于 2002-08-27 16:55:27 得分 15
写一个函数,如
private sub showContextMenu()
ContextMunu1.MenuItems.Clear()
ContextMunu1.MenuItems.Add("open", New System.EventHandler(Address of Me.MenuItem1_Click))
ContextMunu1.MenuItems.Add......
End Sub
点击右键时候调用这个函数Top
2 楼dason2u(沧海浪子)回复于 2002-08-27 17:40:02 得分 15
你也可以将ContextMenu的MenuItem定义成模块级变量,然后在某个地方比如Form.Load中添加进ContextMenu的MenuItems集合。
示例:
'窗体类Form1的成员变量:
Private mi As New MenuItem("打开", New EventHandler(AddressOf mi_Click))
Private Sub mi_Click(ByVal sender As Object, ByVal e As EventArgs)
'Handle Event
End Sub
'Form.Load:
Me.TreeView1.ContextMenu=New ContextMenu()
Me.TreeView1.ContextMenu.MenuItems.Add(Me.mi)
'捕捉MouseUp事件(根据你的代码来的)
If e.Button = MouseButtons.Right Then
Dim thispoint As New Point(e.X, e.Y)
If Me.TreeView1.SelectedNode.ImageIndex = 1 Then
Me.mi.Enabled = False
End If
Me.TreeView1.ContextMenu.Show(sender, thispoint)
Else
......
End If
你再试试。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
天空没有翅膀的痕迹, ☆ ∴° / °° ☆°
而我已飞过…… / / / ☆.
/ ;
为人民服务! /
—— By Dason ★
Top
3 楼mynewpc(水中日月)回复于 2002-08-27 17:55:50 得分 0
试了下不管用,还是开始时定义的菜单.Top
4 楼dason2u(沧海浪子)回复于 2002-08-27 17:56:24 得分 20
致帖主:
我在自己的机子上试过,你那种方法也是可以的。你再检查检查吧。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
天空没有翅膀的痕迹, ☆ ∴° / °° ☆°
而我已飞过…… / / / ☆.
/ ;
为人民服务! /
—— By Dason ★
Top
5 楼mynewpc(水中日月)回复于 2002-08-28 08:15:28 得分 0
不能写在mouse up事件里,写在afterselect事件里就没问题了。谢谢了Top




