在WPF中使用键盘隐藏图片 [英] Hide picture using the keyboard in WPF
问题描述
下面的程序有两个按钮,它们连续点击它们显示和隐藏2张图片...
我想要的是在键盘上设置一个特定的按钮,比如A按钮,并按下它来隐藏两个图片
你能举一个WPF中这样的键盘命令的例子吗?
谢谢
我尝试过:
The program below has two buttons that they show and hide 2 pictures by clicking on them successively...
What i want is to set a particular button on the keyboard, say the A button, and by pressing it to hide both picturs
Can you give me an example of such keyboard command in WPF?
Thanks
What I have tried:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApp2
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{ if (linevertical.Visibility == Visibility.Hidden)
{ linevertical.Visibility = Visibility.Visible; }
else { linevertical.Visibility = Visibility.Hidden; }
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{ if (lineo.Visibility == Visibility.Hidden)
{ lineo.Visibility = Visibility.Visible; }
else { lineo.Visibility = Visibility.Hidden; }
}
}
}
推荐答案
听起来你想要KeyBinding(又名Hotkey,又名键盘快捷方式)
查看此CP帖子的解决方案如何在WPF MVVM模式中创建快捷键 [ ^ ]
参考文档 where [ ^ ]
基本上将KeyGesture绑定到XAML中的按钮单击。我可能会将这两种方法合并为一种,但
Sounds like you want KeyBinding (aka Hotkey, aka keyboard shortcut)
Have a look at the solutions to this CP post How to Create Short Cut Keys in WPF MVVM pattern[^]
Reference Documentation here [^]
Basically bind a KeyGesture to the button click in your XAML. I would probably combine those two methods into one though
private void Button_Click(object sender, RoutedEventArgs e)
{
HideMyObject(linevertical);
HideMyObject(lineo);
}
private void HideMyObject(object myObject)
{
if (myObject.Visibility == Visibility.Hidden)
{
myObject.Visibility = Visibility.Visible;
}
else
{
myObject.Visibility = Visibility.Hidden;
}
}
编辑 - OP不想使用绑定。请尝试这样做
Edit - OP does not want to use binding. Try this instead
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.A)
{
HideMyObject(linevertical);
HideMyObject(lineo);
}
}
请注意,如果使用 Ctrl + A,这将隐藏。除非绝对不会有任何键盘输入到窗口,否则只需A键是个坏主意。
Note this would do the hiding if Ctrl+A is used. It's a bad idea to just the A-key unless there is absolutely never going to be any keyboard input to the window.
我发现这有效:
I found out this which works:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApp2
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{ if (linevertical.Visibility == Visibility.Hidden)
{ linevertical.Visibility = Visibility.Visible; }
else { linevertical.Visibility = Visibility.Hidden; }
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{ if (lineo.Visibility == Visibility.Hidden)
{ lineo.Visibility = Visibility.Visible; }
else { lineo.Visibility = Visibility.Hidden; }
}
private void Mainwindow_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.F5)
{
lineo.Visibility = Visibility.Hidden;
linevertical.Visibility = Visibility.Hidden;
}
}
}
}
但仅适用于F键,我不能用简单的字母,它给我错误,任何想法的家伙?我想使用''A''代替F5 ...
But only works for F keys , i can't use simple letters, it gives me errors, any ideas guys? i want to use the ''A'' letter in place of the F5...
这篇关于在WPF中使用键盘隐藏图片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!