我把TextBox锁定后(Locked=true),还是可以点击右键菜单,然后粘贴改变控件的值。有没有办法,使得Lock以后,屏蔽右键菜单功能?
(我不想把TextBox的Enabled设为False,因为觉得难看。也不想在每个TextBox的鼠标事件中写代码,因为很多,每个都这样处理太麻烦,请提供其他办法)
非常感谢各位!
(我不想把TextBox的Enabled设为False,因为觉得难看。也不想在每个TextBox的鼠标事件中写代码,因为很多,每个都这样处理太麻烦,请提供其他办法)
非常感谢各位!
解决方案 »
- 怎么用VB接收串口的信号?
- VB6.0在XP里写的一个小程序,那到其他机子上无论什么系统一小部分机子可以运行,其他的一运行就是非法操作.大家帮帮
- 帮我做几个vb的题吧!!! (2)
- 怎样得出一个任意四则运算的结果?
- 窗体form1中点击Button显示Form2,Form2.Show(1),在Form2到调用Form2_Load()时,我要它在Form2_Load()里结束Form2的显示,应该怎么做?
- 为什么Winsocket无法同时处理多个客户端?
- VB下使用MSComm控件的问题
- 在VB下如何实现对SQLServer2000的数据库备份?
- 请问谁知道怎么让FILELISTBOX(文件列表)控件中的ICO图标文在IMAGE图形控件中显示出来?
- 关于word.application中的ActiveDocument.Close
- ADO打包问题?
- vb如何实现备份和恢复SQL server 数据库
在Textbox的MouseDown事件中判断鼠标按键是否为右键:
If Button=vbRightButton Then
Text1.Enabled=False
End If
在MouseUp事件中:
Text1.Enabled=True这样就可以了.即鼠标右键按下时临时禁用TextBox.如果必须按题设中的要求,那可能要用HOOK拦截Menu的Initialize事件了,很麻烦,不过是治本的办法.别问我,我不会.
Private Sub Form_Load()
Text1.MaxLength = Len(Text1.Text)
End Sub
If Button = 2 Then
Me.PopupMenu menu
End If
End Sub
'Module1:Option ExplicitPublic OldWindowProc As Long' 保存默认的窗口函数的地址Public Const WM_CONTEXTMENU = &H7B' 当右击文本框时,产生这条消息Public Const GWL_WNDPROC = (-4)Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As LongPublic Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate 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 LongPublic Function SubClass1_WndMessage(ByVal hWnd As OLE_HANDLE, ByVal Msg As OLE_HANDLE, ByVal wp As OLE_HANDLE, ByVal lp As Long) As LongIf Msg = WM_CONTEXTMENU Then SubClass1_WndMessage = TrueElse SubClass1_WndMessage = CallWindowProc(OldWindowProc, hWnd, Msg, wp, lp) ' 如果消息不是WM_CONTEXTMENU,就调用默认的窗口函数处理End IfEnd Function