VB菜鳥關於彈出式選單的問題

  • 作者:由 back、 發表于 體育
  • 2022-10-02

VB菜鳥關於彈出式選單的問題匿名使用者2011.03.10 回答

用滑鼠右鍵單擊時 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。顯示自定義的選單。不顯示標準的編輯選單。

Top