vb text控件中如何禁止右键?
让右键按下后没有反应,不弹出菜单?程序运行后,就是在编写的文本框内按下右键后,只要外表看起来没有变化也可。...
让右键按下后没有反应,不弹出菜单?
程序运行后,就是在编写的文本框内按下右键后,只要外表看起来没有变化也可。 展开
程序运行后,就是在编写的文本框内按下右键后,只要外表看起来没有变化也可。 展开
4个回答
展开全部
新建一个模块,代码如下:
'===================================================================================================
'| 模 块 名 | TextBoxDisableAbility
'| 说 明 | 禁止文本框的功能
'| 创 建 人 | QQ:447201162 E-Mail:447201162@163.com
'| 日 期 | 2013-4-22
'===================================================================================================
Option Explicit
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_WNDPROC = (-4)
Private Const WM_CUT = &H300 '-------------剪切消息
Private Const WM_COPY As Long = &H301 '-------------复制消息
Private Const WM_PASTE As Long = &H302 '-------------粘贴消息
Private Const WM_CLEAR = &H303 '-------------删除消息[右键菜单的删除]
Private Const EM_UNDO = &HC7 '-------------撤销消息
Private Const WM_CONTEXTMENU = &H7B '-------------右键菜单
Private prevWndProc As Long
Private Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case Msg
Case WM_CUT, WM_COPY, WM_PASTE, WM_CLEAR, EM_UNDO, WM_CONTEXTMENU
'这里处理自定义的事件,最好为空
Case Else
'回调系统函数处理
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
End Select
End Function
Public Sub DisableAbility(TargetTextBox As TextBox)
'程序启动时调用这个
prevWndProc = GetWindowLong(TargetTextBox.hwnd, GWL_WNDPROC)
SetWindowLong TargetTextBox.hwnd, GWL_WNDPROC, AddressOf WndProc
End Sub
窗体中这样调用:
Private Sub Form_Load()
DisableAbility Text1
End Sub
追问
这也太复杂了也
追答
主要代码都在模块里,窗体中一句话即可调用,要实现你所说的要求,必须如此
展开全部
默认的不设置的话会弹出系统默认的右键菜单,你设置一个MENUSTRIP,上面没有东西,绑定到这个TEXT控件,就不会弹出这个菜单了
追问
能否说的详细一些。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
设置一个右键菜单, ContextMenuStrip. 将文本框的 ContextMenuStrip 属性设置为这个菜单, 但要保证菜单实际啥也没有. 这样在运行时右键单击文本框就啥事也没了. 这是 .NET 的写法, 6.0 好像不能直接这么用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then '判断键值是否是鼠标右键
msgbox "鼠标右键已被屏蔽!" '或者什么都不写就没反应了。
End If
End Sub
If Button = 2 Then '判断键值是否是鼠标右键
msgbox "鼠标右键已被屏蔽!" '或者什么都不写就没反应了。
End If
End Sub
更多追问追答
追问
不行啊,弹出了msgbox框啊。
追答
= = 亲 我代码里加一个msgbox是为了证明右键已经被屏蔽 你完全照着复制的么?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询