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
のイベントのコード:MainWindow
MainWindow1_Loaded
PressKey(Key.LeftAlt);
(eg )Window.KeyDown
のイベントのコード:MainWindow
MainWindow1_KeyDown
if (e.Key == Key.LeftCtrl)
{
AppendHotKey(Bt1, 0);
}
(eg )Window.KeyUp
のイベントのコード:MainWindow
MainWindow1_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
のインスタンスを作成します。HotKeyChar
Control
- そして今、
KeyDown
イベントで ..appending の をループするKeyValuePair<...>
だけList<...>
です_
。
KeyUp
イベントでは、..removing 内の をループするKeyValuePair<...>
だけList<...>
です_
。
お役に立てば幸いです。