Рейтинг:
2
tool__
Я выяснил вот что работает:
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 , я не могу использовать простые буквы, это дает мне ошибки, есть идеи, ребята? я хочу использовать букву "А" вместо буквы F5...
Рейтинг:
17
CHill60
Похоже, вам нужна привязка клавиш (она же горячая клавиша, она же сочетание клавиш)
Взгляните на решения для этого поста CP Как создать короткую стрижку ключи в шаблон WPF с использованием MVVM [^]
справочная документация здесь [^]
В принципе привязать KeyGesture нажатия кнопки в XAML. Хотя я бы, вероятно, объединил эти два метода в один
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;
}
}
Редактирование - ОП не хотите использовать связывание. Попробуйте вместо этого
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.A)
{
HideMyObject(linevertical);
HideMyObject(lineo);
}
}
Обратите внимание, что это будет делать скрытие, если
CtrlИспользуется +A. Это плохая идея-просто клавиша а, если только в окне абсолютно никогда не будет никакого ввода с клавиатуры.
tool__
Спасибо за ваш ответ, если вы нажмете на главное окно конструктора , а затем перейдете на вкладку Свойства\ обработчики событий, там есть опция KeyDown, если вы нажмете на нее, она поставит код за этим:
private void mainwindow_KeyDown(отправитель объекта, KeyEventArgs e)
{
}
почему-то вы говорите там в скобках: если нажата клавиша "а", сделайте это...
но я не знаю, как это сделать...
таким образом, я хочу сделать это, я не хочу использовать MVVM и привязку, если есть более простой способ сделать это, и я не хочу использовать вещи, которые я вообще не понимаю
CHill60
Я обновил свое решение
tool__
Да, в программе не будет абсолютно никаких клавиатурных входов. Взгляните, если можете, на решение, которое я опубликовал ниже, каково ваше мнение по этому поводу? это работает...
CHill60
Когда вы говорите: "Я не могу использовать простые буквы, это дает мне ошибки", в частности, что это за ошибки?
tool__
Я исправил это, я использовал кавычки с буквой "А" и некоторые другие вещи... вот почему подчеркнул его и дал мне ошибки, ему нужна только буква, И все в порядке, спасибо