有沒有簡單的方法來設置Visual Studio 2010中的選項卡控件中的選項卡的鍵盤快捷鍵?有一些我可以設置的屬性嗎?如何設置Windows窗體TabControl的鍵盤快捷鍵?
我在網上看,但我看到的所有文章都很混亂。
有沒有簡單的方法來設置Visual Studio 2010中的選項卡控件中的選項卡的鍵盤快捷鍵?有一些我可以設置的屬性嗎?如何設置Windows窗體TabControl的鍵盤快捷鍵?
我在網上看,但我看到的所有文章都很混亂。
不幸的是,沒有任何這樣的屬性,但實現這個功能並不一定很難。有兩種方法值得考慮,這取決於應用程序的設計。
如果承載TabControl
的表單已經使用菜單系統,則設置幾乎是微不足道的。首先,您需要添加一個菜單命令,切換到您的TabControl
中的每個TabPage
。然後,您可以簡單地向該菜單項添加鍵盤快捷鍵(其中爲簡單屬性MenuItem
/ToolStripMenuItem
),以便無論何時按下該鍵,該菜單命令都會執行,並切換到相應的TabPage
。
但是,菜單系統可能不適合每種形式。如果是這樣的話,你將不得不做更多的工作。基本上,您需要將承載您的TabControl
的表單的KeyPreview
屬性設置爲True,並檢測要用來切換製表符的鍵盤快捷鍵。
設置表單的KeyPreview
property允許該表單在這些事件傳遞到具有焦點的控件之前接收關鍵事件。這對於此方法起作用至關重要,否則,表單的KeyDown
事件處理程序中的代碼將永遠不會檢測到要捕獲的擊鍵。只有表單處理完成後,每個按鍵纔會被傳遞到通常會收到的控件上。
因此,一旦您設置了此屬性,您需要將代碼添加到表單的KeyDown
event的處理程序中,以監視您要使用的任何鍵盤快捷鍵,然後在檢測到其中一個鍵時切換標籤被按下。否則,你不必做任何事情。
舉例來說,如果你有三個TabPages
表單上,你可能會認爲F2將切換到第一個選項卡,F3將切換到第二個,F4將切換到第三(儘管,顯然,你可以使用任何你想要的鍵)。然後,您可以添加以下代碼到表單的KeyDown
事件處理程序,檢測被按下這些鍵和採取相應的行動:
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
Select Case e.KeyCode
Case Keys.F2
'Switch to the first tab page
MyTabControl.SelectedIndex = 0
Case Keys.F3
'Switch to the second tab page
MyTabControl.SelectedIndex = 1
Case Keys.F4
'Switch to the third tab page
MyTabControl.SelectedIndex = 2
End Select
End Sub
您可以覆蓋一個控件的ProcessCmdKey()方法來實現自定義的快捷鍵。這樣做的一個巨大優勢在於,只有在選項卡頁面上的選項卡控件或其中一個控件具有焦點時,按鍵纔會起作用。 Project +添加類,粘貼下面顯示的代碼並編譯。將新的控件從工具箱的頂部拖放到表單上。
Public Class MyTabControl
Inherits TabControl
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
If keyData >= Keys.F1 And keyData <= Keys.F10 Then
Me.SelectedIndex = keyData - Keys.F1
Return True
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function
End Class
如果您希望無論窗體上的哪個控件具有焦點,都要使用這些功能鍵,那麼您應該重寫窗體的ProcessCmdKey方法。
Windows Forms應用程序? ASP.NET? WPF?第三方控件庫? – 2010-12-15 17:38:19
Windows窗體應用程序在後面的代碼中使用VB。 – chama 2010-12-15 17:44:26
爲什麼這不封閉?你還需要別的嗎? – 2010-12-24 07:34:33