在WPF中使用键盘隐藏图片 [英] Hide picture using the keyboard in WPF

查看:76
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆