VB菜鳥關於彈出式選單的問題
- 2022-10-02
用滑鼠右鍵單擊時 TextBox 控制元件上,顯示其預設彈出式選單。Visual Basic 不具有屬性或直接將禁用此功能的任何其他內建的機制。但是,該控制元件的 有效 屬性設定為 False 防止選單顯示,儘管這使使用者可以看到該控制元件被禁用。
一個解決方法是使用 Windows LockWindowUpdate 應用程式程式設計介面 (API) 結合 可用 屬性。LockWindowUpdate 函式禁用或重新-啟用指定視窗中的繪圖。該操作完成後該控制元件是重新啟用,和 LockWindowUpdate API 呼叫第二次以恢復該控制元件的繪圖。 建立示例專案的步驟
在 Visual Basic 中開始一個新的標準 EXE 專案。預設情況下建立 Form1。
向 Form1 中新增 文字框 控制元件。
從 工具 選單中單擊 選單編輯器 並建立一個名為 Form1 上的 mnuPopUp 的選單。清除 可見 複選框,並新增項,如下所示:標題: 名稱
檔案: mnuPopup
新建: mnuOne
開啟: MnuTwo
下面的程式碼新增到 Form1 的程式碼視窗: Private Declare Function LockWindowUpdate Lib “user32” _
(ByVal hwndLock As Long) As Long
Private Sub mnuOne_Click()
Text1。Text = “Menu One was clicked”
End Sub
Private Sub mnuTwo_Click()
Text1。Text = “Menu two was clicked”
End Sub
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
If Button = vbRightButton Then
‘ Avoid the ’disabled‘ gray text by locking updates
LockWindowUpdate Text1。hWnd
’ A disabled TextBox will not display a context menu
Text1。Enabled = False
‘ Give the previous line time to complete
DoEvents
’ Display our own context menu
PopupMenu mnuPopup
‘ Enable the control again
Text1。Enabled = True
’ Unlock updates
LockWindowUpdate 0&
End If
End Sub
儲存並執行該專案。
用滑鼠右鍵單擊文字 1。顯示自定義的選單。不顯示標準的編輯選單。
上一篇:想學釣魚,買什麼魚竿好?
下一篇:減肥飲食最好怎麼吃