Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/47: Рейтинг темы: голосов - 47, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 8
1
.NET 3.x

WPF Активация кнопки, по нажатию клавиши

23.06.2011, 00:22. Показов 9310. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста.
Суть вот в чём. Я решил сделать на WPF C# Драмм Машину. То есть - Нажимаю на Баттон , и он издаёт звук . Но Баттон я нажимаю мышью. Как сделать так, чтобы при нажатии допустим клавиши "q" нажимался баттон1 ??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.06.2011, 00:22
Ответы с готовыми решениями:

Вывод в TextBox по нажатию кнопки (WPF)
Как в проекте WPF При нажатии кнопки(Button)выполнялось действие вывода на textbox(хочу сделать...

Закрыть приложение WPF по нажатию на кнопки
Добрый день. Хочу закрыть приложение по нажатию кнопки, но ничего не выходит. Читал тут:...

WPF TextBox передача значения по нажатию кнопки
В WPF компонент TextBox передает свое значение в прибиндинное свойство только когда теряет фокус....

Как создать всплывающее окно, по нажатию кнопки в C# WPF
Никак не могу понять , как сюда - добавить уведомление (Всплывающие), желательно для Windows 10...

9
101 / 86 / 6
Регистрация: 08.04.2010
Сообщений: 169
23.06.2011, 11:52 2
C#
1
2
3
4
5
6
7
<Window.InputBindings>
 
<KeyBinding Command="{StaticResource PressedButtonCommand}"  Key="q"/>
 
</Window.InputBindings>
 
<Button x:Name="MyButton" Command="{StaticResource PressedButtonCommand}">
1
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 8
23.06.2011, 14:10  [ТС] 3
а куда нужно толкать этот код и после чего?? а то я пока не очень разбираюсь в ВПФ.
я пробовал в App.xaml и в MainWindow.xaml. Оно подчёркивает <Window.InputBindings>

Добавлено через 10 минут
XML
1
2
3
4
5
6
7
8
9
<Window x:Class="WPFbutton.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="136,36,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
        <MediaElement Height="120" HorizontalAlignment="Left" Margin="251,12,0,0" Name="mediaElement1" VerticalAlignment="Top" Width="47" MediaOpened="mediaElement1_MediaOpened" />
    </Grid>
</Window>

Вот смотри.. Тут код на одну кнопку..куда вставлять надо?
п.с. Если вставить ВиндовсБиндингИнпутс перед гридом, то всё норм, но последнюю строку не принимает

Добавлено через 21 минуту
Опять я.. А то мне этот элемент очень нужен


XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   <Window x:Class="WPFbutton.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
        <Window.InputBindings>
            <KeyBinding Command="{StaticResource PressedButtonCommand}"  Key="q"/>
        </Window.InputBindings>
    <Button x:Name="button1" Command="{StaticResource PressedButtonCommand}">
        <Grid>
        
        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="136,36,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
        <MediaElement Height="120" HorizontalAlignment="Left" Margin="251,12,0,0" Name="mediaElement1" VerticalAlignment="Top" Width="47" MediaOpened="mediaElement1_MediaOpened" />
    </Grid>
</Window>

Так - выбивает ошибку, но запускаеться.. Нажимаю клавишу q - нечего не происходит.. а Мышью нажимаю - идёт звук
0
101 / 86 / 6
Регистрация: 08.04.2010
Сообщений: 169
23.06.2011, 15:28 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<Window x:Class="WpfApplication1.CommandWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Custom Command Test" Height="300" Width="300">
 
    <Window.CommandBindings>
        <CommandBinding Command="Help" 
        CanExecute="HelpCanExecute"
        Executed="HelpExecuted" />
    </Window.CommandBindings>
 
    <Window.InputBindings>
        <KeyBinding Command="Help" Key="H" Modifiers="Ctrl"/>
        <MouseBinding Command="Help" MouseAction="LeftDoubleClick" />
    </Window.InputBindings>
 
    <StackPanel>
        <Button Command="Help" Content="Help Command Button" />
        <Button Content="My Command" x:Name="MyCommandButton" />
    </StackPanel>
</Window>
MainWindow.xaml.cs

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public partial class CommandWindow : Window
  {
    public static RoutedCommand MyCommand = new RoutedCommand();
 
    private bool _helpCanExecute = true;
 
    public CommandWindow()
    {
      InitializeComponent();
 
      CommandBinding cb = new CommandBinding(MyCommand,
          MyCommandExecute, MyCommandCanExecute);
      this.CommandBindings.Add(cb);
 
      MyCommandButton.Command = MyCommand;
 
      KeyGesture kg = new KeyGesture(Key.M, ModifierKeys.Control);
      InputBinding ib = new InputBinding(MyCommand, kg);
      this.InputBindings.Add(ib);
    }
 
    private void HelpCanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
      e.CanExecute = _helpCanExecute;
      e.Handled = true;
    }
 
    private void HelpExecuted(object sender, ExecutedRoutedEventArgs e)
    {
      MessageBox.Show("Hey, I'm some help.");
    }
 
    private void MyCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
      e.CanExecute = true;
    }
 
    private void MyCommandExecute(object sender, ExecutedRoutedEventArgs e)
    {
      MessageBox.Show("My Command!");
      _helpCanExecute = !_helpCanExecute;
    }
  }
код полностьб рабочий, для ваших нужд его надо модифицировать. Как, я думаю вы разберетесь
1
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 8
23.06.2011, 18:19  [ТС] 5
Большое спасибо)
помогло)
0
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 8
23.06.2011, 18:57  [ТС] 6
Хэх, ну я то думал уже всё)
так фиг)
суть я понял, и работает
но не в моём случае

вообщем для чего я это всё делал - для того, чтобы при нажатии БАТТОНА вылазил звук..
КОгда сделал Бинд клавиши вашим способом, оповещение вылазит, что кнопка нажата, но почему то звук не издаёт.. Издаёт звук только в том случаи - если нажать мышкой..

Эх..

Добавлено через 24 секунды
Хэх, ну я то думал уже всё)
так не вышло.
суть я понял, и работает
но не в моём случае

вообщем для чего я это всё делал - для того, чтобы при нажатии БАТТОНА вылазил звук..
КОгда сделал Бинд клавиши вашим способом, оповещение вылазит, что кнопка нажата, но почему то звук не издаёт.. Издаёт звук только в том случаи - если нажать мышкой..

Эх..
0
101 / 86 / 6
Регистрация: 08.04.2010
Сообщений: 169
23.06.2011, 19:27 7
код проекта особенно ту часть где издается звук...

Добавлено через 15 минут
кажется что вы используете и обработчик события Click и Command на одной кнопке....
1
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 8
23.06.2011, 19:32  [ТС] 8
namespace WPFbutton
{
public partial class MainWindow : Window
{
public static RoutedCommand MyCommand = new RoutedCommand();
public MainWindow()
{
InitializeComponent();
}
MediaPlayer player = new MediaPlayer();

private void button1_Click(object sender, RoutedEventArgs e)
{
mediaElement1.Source = new Uri("CCRASH.wav", UriKind.Relative);
}

private void mediaElement1_MediaOpened(object sender, RoutedEventArgs e)
{

}

}
}



<Window x:Class="WPFbutton.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="136,36,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
<MediaElement Height="120" HorizontalAlignment="Left" Margin="251,12,0,0" Name="mediaElement1" VerticalAlignment="Top" Width="47" MediaOpened="mediaElement1_MediaOpened" />
</Grid>
</Window>



Вот. При запуске програки , просто появляеться Баттон, по которому клацаешь , он издаёт звук, который находится в папке проэкта в bin ..

Очень на вас надеюсь)

Добавлено через 52 секунды
public static RoutedCommand MyCommand = new RoutedCommand();
эту строчку с вашего кода забыл стереть)
0
101 / 86 / 6
Регистрация: 08.04.2010
Сообщений: 169
23.06.2011, 19:56 9
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Custom Command Test" Height="300" Width="300">
 
    <Window.CommandBindings>
        <CommandBinding Command="Help" 
         Executed="PlaySoundExecuted" />
    </Window.CommandBindings>
 
    <Window.InputBindings>
        <KeyBinding Command="Help" Key="q"/>
    </Window.InputBindings>
 
    <StackPanel>
        <Button Command="Help" Content="Play Sound" />
        <MediaElement Height="120" HorizontalAlignment="Left" Margin="251,12,0,0" Name="mediaElement1" VerticalAlignment="Top" Width="47" MediaOpened="mediaElement1_MediaOpened" />
    </StackPanel>
</Window>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
 
namespace WpfApplication1
{
  /// <summary>
  /// Interaction logic for MainWindow.xaml
  /// </summary>
  public partial class MainWindow : Window
  {
    public MainWindow()
    {
      InitializeComponent();
    }
 
    private void PlaySoundCanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
      throw new NotImplementedException();
    }
 
    private void PlaySoundExecuted(object sender, ExecutedRoutedEventArgs e)
    {
      mediaElement1.Source = new Uri("CCRASH.wav", UriKind.Relative); 
    }
 
    private void mediaElement1_MediaOpened(object sender, RoutedEventArgs e)
    {
 
    }
  }
}
1
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 8
23.06.2011, 20:06  [ТС] 10
Всё, решено)) Спасибо большое )
реально помогли)
0
23.06.2011, 20:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.06.2011, 20:06
Помогаю со студенческими работами здесь

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

Убрать реагирование кнопки по нажатию клавиши Enter
почему это не работает? private void button1_KeyPress(object sender, KeyPressEventArgs e)...

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

Как создать всплывающее окно, по нажатию кнопки в C# WPF
Как создать всплывающие окно в WPF: private void CREATE_BUTTON_Click(object sender,...

Добавление текстбоксов по нажатию клавиши и удаление по нажатию другой кнопки
Всем доброго времени суток. Хотел попросить помощи в написании следующего кода. Кое что набросал,...

Активация кнопки по нажатию кнопки)
Как сделать чтобы по нажатии одной кнопки становилась активной вторая??


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru