gpt4 book ai didi

c# - 有没有办法让 _ 在没有 Alt 键的情况下出现在热键上?

转载 作者:太空狗 更新时间:2023-10-29 20:40:15 25 4
gpt4 key购买 nike

在 WPF 中,当您制作如下标签时:

<Label Content="_My Label"/>

然后,当您运行该应用并按下 Alt 键时,它会显示带下划线的“M”。

我们有自己的自定义热键附加属性,允许我们使用 Ctrl 以及 Alt

问题是只有 Alt 会显示下划线。

有没有办法在按下 Ctrl 键时显示下划线?

注意:我不想在按下 Ctrl 时在后台发送程序化的 Alt KeyPress。那只会混淆我的快捷方式系统。

最佳答案

好的!我有一个解决方案来显示 _对于没有按下 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);
}
}

Button Bt1 的 XAML 代码:

<Button x:Name="Bt1" Content="Button" HorizontalAlignment="Left" Margin="169,97,0,0" VerticalAlignment="Top" Width="75"/>

Window.Loaded 的代码MainWindow 事件(例如 MainWindow1_Loaded):

PressKey(Key.LeftAlt);

Window.KeyDown 的代码MainWindow 事件(例如 MainWindow1_KeyDown):

if (e.Key == Key.LeftCtrl)
{
AppendHotKey(Bt1, 0);
}

Window.KeyUp 的代码MainWindow 事件(例如 MainWindow1_KeyUp):

if (e.Key == Key.LeftCtrl)
{
RemoveHotKey(Bt1, 0);
}

现在,当您启动您的应用时,Alt 将被动态按下一次。

现在每次你按下Ctrl,你的Control.Content将附加一个 _所以 HotKey会出现下划线!但有一点是您应该创建 Control.Content没有HotKeyChar '_'但保留 Index你在哪里 _将被追加。

但请记住,如果在您的应用中再次按下 Alt,代码将不再有效。因此,您必须再次按下 Alt 才能使代码正常工作!

添加和删除 HotKeyChar 的最佳方式:

  • 创建 List<KeyValuePair<int, Control>> 的实例存储 IndexHotKeyCharControl .
  • 现在在 KeyDown事件只是循环遍历 KeyValuePair<...>List<...> ..附加 _ .
  • KeyUp事件再次循环遍历 KeyValuePair<...>List<...> ..删除 _ .

希望对您有所帮助!

关于c# - 有没有办法让 _ 在没有 Alt 键的情况下出现在热键上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10543398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com