Vb.net 根据不同对象的状态更改contextMenuStrip
我正在寻找一种在VB.net中实现TreeView的好方法,它的contextMenuStrip根据表单中不同对象的状态而变化 具体来说,在下面的“树视图”中,当对象状态=1时,在项目上显示contextMenuStrip1,当状态=2时,在项目上显示contextMenuStrip2 到目前为止,我已经实现了如下代码所示的上下文菜单,并在创建节点时添加了contextMenuStripVb.net 根据不同对象的状态更改contextMenuStrip,vb.net,contextmenustrip,Vb.net,Contextmenustrip,我正在寻找一种在VB.net中实现TreeView的好方法,它的contextMenuStrip根据表单中不同对象的状态而变化 具体来说,在下面的“树视图”中,当对象状态=1时,在项目上显示contextMenuStrip1,当状态=2时,在项目上显示contextMenuStrip2 到目前为止,我已经实现了如下代码所示的上下文菜单,并在创建节点时添加了contextMenuStrip Dim Context1 As ContextMenuStrip = New ContextMenuStri
Dim Context1 As ContextMenuStrip = New ContextMenuStrip
AddHandler Context1.Items.Add("Delete Item").Click, AddressOf DeleteSub
------------------
| + TreeNode1
| + TreeNode2
| + TreeNode3
| |- Item1
| |- Item2
| |- Item3
------------------
我不知道这个对象是什么,它决定了要使用的菜单,所以我使用了一个
复选框。如果所讨论的对象类似于此,则可以在状态更改时重新分配ContextMenuStrip
——在本例中,使用CheckChange
事件:
Private Sub chkShow2_CheckedChanged(sender...
If chkShow2.Checked Then
tv1.ContextMenuStrip = cms2
Else
tv1.ContextMenuStrip = cms1
End If
End Sub
如果直到需要菜单时才知道该状态,请在鼠标向下
事件中为树视图
重新分配菜单:
If e.Button = Windows.Forms.MouseButtons.Right Then
If chkShow2.Checked Then
tv1.ContextMenuStrip = cms2
Else
tv1.ContextMenuStrip = cms1
End If
End If
也可以手动显示菜单,而不是将其指定给控件:
Private Sub tv1_MouseDown(sender ...
If e.Button = Windows.Forms.MouseButtons.Right Then
If chkShow2.Checked Then
cms2.Show(tv1, e.Location)
Else
cms1.Show(tv1, e.Location)
End If
End If
End Sub
是否也可以向contextMenuStrip项追加一个数字?
对。您可以在菜单项显示之前添加/更改或删除菜单项。例如,如果您有节点{A,B,C}
,并且想要实现一个移动到…
项,当它在节点B中打开时,禁用该目标 您可以在菜单打开时禁用某些内容,具体取决于它所覆盖的内容。是否还可以在contextMenuStrip项中添加一个数字?假设我选择了dataGridView的第13行,则将“13”附加到字符串。“删除项目13”,例如,是的,我有一个CMS填写空白类型的东西-你需要设置整个文本,虽然以避免“删除项目13,15,45,47,1,13……”什么是对象在代码>对象状态= 1 < /代码>?如果你把其中的两个放在表单上,你可以很容易地根据任何情况显示其中一个。您还可以让事件处理程序提前全部连接。TreeView中的项目将是用户可以添加到dataGridView的“步骤”。每个步骤都将具有可在dataGridView中配置的属性。dataGridView中的位置、位置、最后一步等将决定上下文菜单,插入、追加、覆盖等等。我将避免使用完全动态的菜单。例如,使用所有这些条目(追加、插入、替换、上移、下移等)构建它,然后只隐藏或禁用不适用的条目。我正在查看动态菜单,因为这些函数需要在用户当前选择的dataGridView中的行上运行。上下文菜单应该显示他们应用该操作的“步骤”编号。但是,改变菜单的可见性并将行号附加到末尾是有意义的。所谓完全动态,我指的是频繁添加和删除项目。如果你需要它,你也需要它,但我会尝试设置一组菜单项,这些菜单项在不适用时被禁用或隐藏。显示“步骤编号”只是更改文本,不需要删除或添加项目。