Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
FumoZt
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 8
1

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

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

Подскажите пожалуйста.
Суть вот в чём. Я решил сделать на WPF C# Драмм Машину. То есть - Нажимаю на Баттон , и он издаёт звук . Но Баттон я нажимаю мышью. Как сделать так, чтобы при нажатии допустим клавиши "q" нажимался баттон1 ??

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2011, 00:22
Ответы с готовыми решениями:

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

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

Можно ли из WPF приложения открыть Консольное приложение по нажатию кнопки?
Завтра экзамен, 2 задания - одно консольное, другое WPF. Было бы не плохо...

Tab Control на WPF, переключение между вкладками по нажатию кнопки
Здравствуйте форумчане, есть вопрос связанный с Tab Control на WPF. Задача...

Есть кнопка WPF. Нужно, чтобы по нажатию кнопки загружалась картинка
В Windows Form это выглядело все так: this.BackgroundImage =...

9
al.k
100 / 85 / 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
FumoZt
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
al.k
100 / 85 / 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
FumoZt
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 8
23.06.2011, 18:19  [ТС] 5
Большое спасибо)
помогло)
0
FumoZt
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 8
23.06.2011, 18:57  [ТС] 6
Хэх, ну я то думал уже всё)
так фиг)
суть я понял, и работает
но не в моём случае

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

Эх..

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

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

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

Добавлено через 15 минут
кажется что вы используете и обработчик события Click и Command на одной кнопке....
1
FumoZt
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
al.k
100 / 85 / 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
FumoZt
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 8
23.06.2011, 20:06  [ТС] 10
Всё, решено)) Спасибо большое )
реально помогли)
0
23.06.2011, 20:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2011, 20:06

Нарисовать домик по нажатию кнопки, и звезду по нажатию на форме
Нарисовать домик по нажатию кнопки и звезду по нажатию на форме

Пропал стандартный стиль объёмной кнопки WPF (кнопки теперь плоские)
Пропал стиль стандартных WPF кнопок. Кнопки теперь только плоские. Что...

Активация\деактивация кнопки
private void TextBox_TextChanged(object sender, TextChangedEventArgs e) ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru