Ok!_ホットキーをAlt押さずに押しても表示する解決策がありますCtrl。
方法は次のとおりです。
キーボードのキーを動的に押すための小さなコード:
//<summary>
//Function to Perform a Keyboard KeyPress.
//</summary>
void PressKey(Key KeyboardKey)
{
KeyEventArgs args = new KeyEventArgs(Keyboard.PrimaryDevice,
Keyboard.PrimaryDevice.ActiveSource, 0, Key.LeftAlt);
args.RoutedEvent = Keyboard.KeyDownEvent;
InputManager.Current.ProcessInput(args);
}
追加および削除するコードHotKeyChar:
//<summary>
//Function to Append a HotKeyChar to a Content of a Control.
//</summary>
void AppendHotKeyChar(ContentControl Ctrl, int KeyIndex)
{
if (Ctrl.Content.ToString().Substring(KeyIndex, 1) != "_")
{
Ctrl.Content = "_" + Ctrl.Content;
}
}
//<summary>
//Function to Remove a HotKeyChar to a Content of a Control.
//</summary>
void RemoveHotKeyChar(ContentControl Ctrl, int KeyIndex)
{
if (Ctrl.Content.ToString().Substring(KeyIndex, 1) == "_")
{
Ctrl.Content = Ctrl.Content.ToString().Remove(KeyIndex, 1);
}
}
の XAML コードButton Bt1:
<Button x:Name="Bt1" Content="Button" HorizontalAlignment="Left" Margin="169,97,0,0" VerticalAlignment="Top" Width="75"/>
(eg )Window.Loadedのイベントのコード:MainWindowMainWindow1_Loaded
PressKey(Key.LeftAlt);
(eg )Window.KeyDownのイベントのコード:MainWindowMainWindow1_KeyDown
if (e.Key == Key.LeftCtrl)
{
AppendHotKey(Bt1, 0);
}
(eg )Window.KeyUpのイベントのコード:MainWindowMainWindow1_KeyUp
if (e.Key == Key.LeftCtrl)
{
RemoveHotKey(Bt1, 0);
}
これで、アプリを起動すると、Alt動的に 1 回押されます。
Ctrlそして、を押すたびにControl.Contentが追加され、_がHotKey下線付きで表示されます! ただし、1 つの注意点は、追加する場所を作成せずに作成する必要があるということですControl.Content。HotKeyChar '_'Index_
ただしAlt、アプリで をもう一度押すと、コードが機能しなくなることに注意してください。したがって、Altコードを機能させるには、もう一度押す必要があります。
を追加および削除する最良の方法HotKeyChar:
- のと
List<KeyValuePair<int, Control>>を格納するIndexのインスタンスを作成します。HotKeyCharControl
- そして今、
KeyDownイベントで ..appending の をループするKeyValuePair<...>だけList<...>です_。
KeyUpイベントでは、..removing 内の をループするKeyValuePair<...>だけList<...>です_。
お役に立てば幸いです。