我已經為一個應用程式撰寫了一個擴展框架,我希望用戶能夠設定鍵盤快捷鍵以運行他們的擴展。
當我在運行時將 MenuItem 添加到 MainMenu 控制元件時,我希望能夠使用 Crtl N,例如,運行擴展,而不必使用滑鼠或鍵盤單擊 MenuItem。
但問題是我不知道如何將用戶的字串值轉換為MenuItem.Shortcut。
例如,這是用戶選擇的鍵盤快捷鍵"Ctrl N"
如何以某種方式將其轉換為MenuItem.Shortcut?我在 MSDN 上找不到任何關于此的內容。我已經閱讀了檔案。
uj5u.com熱心網友回復:
您可以將用戶輸入決議為字串,例如:
var shortcut = Enum.Parse(typeof(Shortcut), "CtrlN");
但我建議你不要那樣做。您強制用戶輸入類似CtrlShiftF10, 正確大小寫的內容,否則輸入驗證失敗。
一個專用的界面,類似于 PropertyGrid 中顯示的快捷方式轉換器會更好,因此您不會強迫用戶猜測要寫什么并避免拼寫錯誤。
但是您也可以將快捷方式列舉器的值(表示 的組合Keys)分配給例如 ComboBox 的 DataSource,這樣您就可以讓用戶選擇其中一個條目。
例如,使用MainMenu組件(在 .Net Core 3.1 中已棄用),獲取 Shortcut 列舉器的值,然后設定 MenuItem 的 Shortcut 屬性:
someComboBox.DataSource = Enum.GetValues(typeof(Shortcut));
someComboBox.SelectionChangeCommitted = (s, e) =>
{ var selectedShortcut = (Shortcut)(s as ComboBox).SelectedItem; };
使用MenuStrip控制元件,您必須轉換SelectedItem為Keys。Shortcut 列舉器在 .Net 中仍然可用
// [...]
someComboBox.SelectionChangeCommitted = (s, e) =>
{ var selectedKeys = (Keys)(s as ComboBox).SelectedItem; };
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/527507.html
標籤:C#。网表格捷径主菜单
