@postya

Как перенести нажатия на горячие клавиши в отдельный класс?

Приложение на C# + WPF

В одном окне у меня есть метод, который обрабатывает нажатия на горячие клавиши. В данном случае использую клавишу "Тильда"

Мне бы не хотелось иметь методы для обработки всех клавиш для каждого окна, а сделать общий класс, который бы обрабатывал все нажатия горячих клавиш для всех окон приложения

Как перенести методы горячих клавиш в отдельный класс?

QuestWindow.xaml:

<Window x:Class="ToolkitsNew.QuestWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:local="clr-namespace:ToolkitsNew"
        mc:Ignorable="d"
        Closing="CloseQuestionWindow"
        Icon="images/icons/icon without logo.ico"
        Background="#535353"
        Topmost="True"
        KeyDown="ShowPreviewCard"
        Title="Card Editor"
        WindowStartupLocation="CenterScreen"
        Height="500"
        Width="734">


QuestWindow.cs:

private void ShowPreviewCard(object sender, KeyEventArgs e)
        {
           
            if (e.Key == Key.OemTilde)
            {
                e.Handled = true;
                if (keyTilde == 0)
                {                   
                    window.Topmost = true;
                    window.cardText.Text = questionTextBox.Text;
                    window.cardBorder.Visibility = Visibility.Visible;
                    keyTilde = 1;
                }
                
                else if (keyTilde == 1)
                {
                    window.cardText.Text = answerTextBox.Text;                    
                    keyTilde = 2;
                }
                
                else if (keyTilde == 2)
                {                    
                    window.cardBorder.Visibility = Visibility.Hidden;                   
                    keyTilde = 0;
                    this.Visibility = Visibility.Visible;
                    window.Topmost = false;
                }
            }
             
        }
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 1
yarosroman
@yarosroman Куратор тега C#
C# the best
Сделайте в отдельный класс с методом и в конструкторе окна
this.KeyDown += new KeyEventHandler(YourClass.KeyHandler);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы