powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Исправить обработчик события нажатия на клавишу
10 сообщений из 10, страница 1 из 1
Исправить обработчик события нажатия на клавишу
    #38847546
Slant-shadow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Код: c#
1.
2.
3.
4.
5.
6.
7.
private void Eventer_Closing(object sender, KeyEventArgs e)
{
   if(e.Key==Key.Escape)
     {
        event.Visibility=Visibility.Collapsed;
      }
}


Можете помочь, почему это срабатывает, только после того как, сначала будет нажата левая кнопка мыши, а потом срабатывает нажатие клавиши. А нужно, чтобы сразу можно было нажать кнопку Escape.
...
Рейтинг: 0 / 0
Исправить обработчик события нажатия на клавишу
    #38847576
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slant-shadow,

на такой вопрос нет ответа, так как мы не экстрасенсы
...
Рейтинг: 0 / 0
Исправить обработчик события нажатия на клавишу
    #38847578
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesмы не экстрасенсы
ну не совсем так

контрол, не имеющий фокуса, клавиатурных событий не получает (левая кнопка мыши собственно и передаёт фокус контролу)

Соответсnвенно, обрабатывать клавиатурные события нужно на уровне формы (установив свойство KeyPreview=True)
...
Рейтинг: 0 / 0
Исправить обработчик события нажатия на клавишу
    #38847584
Slant-shadow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилRoman Mejtesмы не экстрасенсы
Соответсnвенно, обрабатывать клавиатурные события нужно на уровне формы (установив свойство KeyPreview=True)
У меня Grid должен закрываться по нажатию Escape. В Grid указал PreviewKeyDown="Eventer_Closing"
...
Рейтинг: 0 / 0
Исправить обработчик события нажатия на клавишу
    #38847597
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slant-shadow,

это WPF?
...
Рейтинг: 0 / 0
Исправить обработчик события нажатия на клавишу
    #38847619
Slant-shadow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesSlant-shadow,

это WPF?
Да
...
Рейтинг: 0 / 0
Исправить обработчик события нажатия на клавишу
    #38847622
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Slant-shadowRoman MejtesSlant-shadow,

это WPF?
Да
Тогда и спрашивать надо было в ветке WPF. а то голову морочите словом
Код: c#
1.
Event
...
Рейтинг: 0 / 0
Исправить обработчик события нажатия на клавишу
    #38847627
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используйте InputBinding
...
Рейтинг: 0 / 0
Исправить обработчик события нажатия на клавишу
    #38847631
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

можно например вот так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<Window x:Class="Example1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="600" Width="600">

    <Grid>
        <Grid x:Name="MyGrid" Background="Red" Width="500" Height="500">
            <Grid.CommandBindings>
                <CommandBinding Command="{x:Static ApplicationCommands.Close}" Executed="CommandBinding_Executed" />
            </Grid.CommandBindings>
            <Button Width="100" Height="24" Content="Test"/>
        </Grid>
    </Grid>
    <Window.InputBindings>
        <KeyBinding Key="Escape" Command="{x:Static ApplicationCommands.Close}" CommandTarget="{Binding ElementName=MyGrid}"/>
    </Window.InputBindings>
</Window>


маршрутизируемую команду лучше свою сделать свою, а реализацию делать либо через CommandListener или свойства классов модели представления. Я же в пример просто вызвал маршрутизируемую команду в Grid который надо удалить, а там слушатель команд её обработал в виде события Executed.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
        private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            var fwe = sender as UIElement;
            if (fwe != null)
            {
                fwe.Visibility = (fwe.Visibility == Visibility.Hidden) ? Visibility.Visible : Visibility.Hidden;
            }
        }



Модератор: Тема перенесена из форума "WinForms, .Net Framework".
...
Рейтинг: 0 / 0
Исправить обработчик события нажатия на клавишу
    #38852611
Slant-shadow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes, Спасибо
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Исправить обработчик события нажатия на клавишу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]