vb做右键菜单怎么做

教我... 教我 展开
 我来答
jizhongbo
推荐于2017-11-29 · TA获得超过2154个赞
知道大有可为答主
回答量:1493
采纳率:0%
帮助的人:904万
展开全部
VB实现窗口的弹出式菜单

在Windows95、Windows98或NT的风格中,有按动鼠标器右键弹出下拉菜单的操作,在VB执行环境下,有一些控件本身具有弹下拉菜单的功能,如TexTbox控件等,但大多数编辑类控件以及窗体本身却没有此功能,要在窗口中任意位置实现PopUpMenu(弹出式菜单),可借助VB的菜单工具来实现。

首先,打开VB的“工具”菜单条,利用“菜单编辑器”为窗体生成一个菜单:

标题(Caption) 菜单条名(Name)

编辑 menuEdit

……复制 mnuCopy

……剪切 munCut

其次,将生成的menuEdit菜单设置为不可视。

Private Sub Form_Load()

Me.menuEdit.Visibe=False

′menuEdit菜单设置为不可视

End Sub

然后,利用MouseDown事件实现任意位置弹出PopUpMenu,如下例:

本例中以RichTexBox控件为例,在其上面实现复制、剪切功能。

1.复制功能的实现。

Private Sub MnuCopy_Click()

Clipboar.Clear′将剪贴板清空

′将RichTexBox控件上选择上的内容复制到剪贴板

Clipboard.SetTextRichTexBox1.SelText

End Sub

2.剪切功能的实现。

Private Sub MnuCut_Click()

Clipboard.Clear ′将剪贴板清空

′将RichTextBox控件上选择了的内容复制到剪贴板

Clipboard.SetTextRichBox1.SelText

′将RichTexBox控件上选择了的内容删除

SendKeys〃{DELETE}〃,True

End Sub

3.在RichTexBox控件的MouseDown事件中实现任意位置弹出PopUPMenu。

OPrivate Sub RichTexBox1_MouseDown(Button As Integer,Shift As Integer,x As Single,Y As Single)

Dim MnuFile AS Menu ′声明一个菜单类型的变量

Set munFile=Me.MenuEdit ′将MenuEdit赋给菜单变量

if Button=2 Then ′判断是否按动鼠标器右键

′判断RichTexBox控件上选择了的内容是否存在,决定复制、剪切菜单条是否可操作。

If Len(RichTexBox.Text)=0 Or Len(RichTexBox.SelText)=0 Then

mnuCopy.Enabled=Flase ′复制菜单条不可操作。

nmuCut.Enabled=False ′剪切菜单条不可操作。

nmuCopy.Enabled=True ′复制菜单条可操作。

nmuCut.Enabled=True ′剪切菜单条可操作。

End IF

PopupMenu mnuFile ′弹出PopUpMenu。

End If

End Sub

这样,在VB执行环境中,操作窗体上的RichTexBox控件,按动鼠标器右键就可弹出下拉菜单,实现复制、剪切功能。

参考资料: http://www.daima.com.cn/Info/112/Info36069/

XnnYygn
2006-05-04 · TA获得超过751个赞
知道小有建树答主
回答量:1001
采纳率:0%
帮助的人:0
展开全部
显示弹出式菜单

弹出式菜单是独立于菜单栏而显示在窗体上的浮动菜单。在弹出式菜单上显示的项目取决于按下鼠标右键时指针所处的位置;因而,弹出式菜单也被称为上下文菜单。在 Microsoft Windows 95 中,可以通过单击鼠标右键来激活上下文菜单。

在运行时,至少含有一个菜单项的任何菜单都可以作为弹出式菜单被显示。为了显示弹出式菜单,可使用 PopupMenu 方法。这个方法使用下列语法:

[object.]PopupMenu menuname [, flags [,x [, y [, boldcommand ]]]]

例如:当用户用鼠标右键单击一个窗体时,以下的代码显示一个名为 mnuFile 的菜单。可用 MouseUp 或者 MouseDown 事件来检测何时单击了鼠标右键,虽然标准用法是使用 MouseUp 事件:

Private Sub Form_MouseUp (Button As Integer, Shift As _
Integer, X As Single, Y As Single)
If Button = 2 Then ' 检查是否单击了鼠标右键。
PopupMenu mnuFile ' 把文件菜单显示为一个弹出式菜单。
End If
End Sub

直到菜单中被选取一项或者取消这个菜单时,调用 PopupMenu 方法后面的代码才会运行。

注意 每次只能显示一个弹出式菜单。在已显示一个弹出式菜单的情况下,对后面的调用 PopupMenu 方法将不予理睬。在一个菜单控件正活动的任何时刻,调用 PopupMenu 方法均不会被理睬。

常常会想用一个弹出式菜单来访问那些在菜单栏中不常用的选项。为创建一个不显示在菜单栏里的菜单,可在设计时使顶级菜单项目为不可见(保证在菜单编辑器里的“Visible”复选框没有被选上)。当 Visual Basic 显示一个弹出式菜单时,指定的顶级菜单的 Visible 属性会被忽略。

Flags 参数
在 PopupMenu 方法中使用 flags 参数可以进一步定义弹出式菜单的位置与性能。下表列出了可用于描述弹出式菜单位置的标志。

位置常数 描述
vbPopupMenuLeftAlign 缺省。指定的 x 位置定义了该弹出式菜单的左边界。
vbPopupMenuCenterAlign 弹出式菜单以指定的 x 位置为中心。
vbPopupMenuRightAlign 指定的 x 位置定义了该弹出式菜单的右边界。

下表列出了可用于描述弹出式菜单性能的标志。

行为常数 描述
vbPopupMenuLeftButton 缺省。只有当用户用鼠标左键单击菜单项时,才显示弹出式菜单。
vbPopupMenuRightButton 当用户用鼠标右键或者左键单击菜单项时,显示弹出式菜单。

想要指定一个标志,从每组中选取一个常数,再用 Or 操作符将它们连起来。下面的代码是,当用户单击一个命令按钮时,显示一个上边框在窗体中心的弹出式菜单。弹出式菜单触发受到鼠标右键或左键单击的菜单项的 Click 事件。

Private Sub Command1_Click ()
' X 变量和 Y 变量的尺寸。
Dim xloc, yloc

'设置 X 变量和 Y 变量到窗体中心。
xloc = ScaleWidth / 2
yloc = ScaleHeight / 2

'显示弹出式菜单。
PopupMenu mnuEdit, vbPopupMenuCenterAlign Or _
vbPopupMenuRightButton, xloc, yloc
End Sub

Boldcommand 参数
使用 boldcommand 参数来指定在显示的弹出式菜单中想以粗体字体出现的菜单控件的名称。在弹出式菜单中只能有一个菜单控件被加粗。

-----------------------------------------------------------------
了解好弹出式菜单后没,只要在需要显示菜单的控件的MOUSEDOWN时间中添加就可以了.

参考资料: MSDN

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泉烟冠以彤
2020-05-12 · TA获得超过3780个赞
知道大有可为答主
回答量:3123
采纳率:29%
帮助的人:412万
展开全部
用菜单编辑器设计菜单,然后在空间的右键按下事件中写入代码,例如:
Private
Sub
控件名_MouseDown(Button
As
Integer,
Shift
As
Integer,
X
As
Single,
Y
As
Single)
If
Button
=
MouseButtonConstants.vbRightButton
Then
PopupMenu
mymenu,
标志,
X,
Y,
默认菜单(即加粗的菜单项)
End
If
End
Sub
如果要隐藏部分菜单项,可以在popupmenu之前设置菜单的属性,例如
mymenu.visible=false
mymenu.enabled=false
然后在弹出菜单后再恢复原属性
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式