aurj Ответов: 1

Основных мероприятий управления в WinForms


Я нажимаю кнопку в графическом интерфейсе.Кнопка отображает сообщение после того, как я ее нажму. Но событие keydown не работает должным образом. Вместо этого он использует клавиши" пробел "и" ввод " вместе с установленными клавишами в WinForms

Что я уже пробовал:

//Как уже упоминалось
this.KeyPreview = true;

//
this.KeyDown += new KeyEventHandler(Form1_KeyDown);


//В ВНИЗ
if (e.KeyCode == Keys.H)
         {
             button1.PerformClick();
         }

OriginalGriff

Это не очень хороший вопрос - мы не можем понять из этого малого, что вы пытаетесь сделать.
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли. Поэтому постарайтесь точно объяснить, что вы пробовали, какие события нажатия и нажатия клавиш Вы имеете в виду и что происходит, чего вы не ожидали.
Чем больше информации Вы нам дадите, тем лучше мы Вам ответим.
Используйте виджет" улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

Graeme_Grant

Пожалуйста, обновите вопрос с четкими и краткими подробностями, нажав на кнопку Улучшить вопрос чтобы добавить больше информации к этому вопросу.

[no name]

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

Graeme_Grant

Откуда происходит нажатие клавиши? слишком трудно сказать. Как это не работает должным образом??

1 Ответов

Рейтинг:
0

OriginalGriff

Если я вставлю этот код в тестовое приложение:

public frmMain()
    {
    InitializeComponent();
    this.KeyPreview = true;
    this.KeyDown += new KeyEventHandler(frmMain_KeyDown);
    }

private void frmMain_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.KeyCode == Keys.H)
        {
        myButton.PerformClick();
        }
    }

private void MyButton_Click(object sender, EventArgs e)
    {
    Console.WriteLine("Done");
    }
Затем каждый раз, когда я нажимаю "H" на клавиатуре, пока форма находится в фокусе, она печатает "Done" на панели вывода - именно этого я и ожидаю.
Так что же вы делаете, что отличается от меня, учитывая, что я копирую ваш код...


Graeme_Grant

Просто опереди меня!

Я бы также сделал следующее:

private void frmMain_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.KeyCode == Keys.H)
        {
        e.Handled = true; / **
        myButton.PerformClick();
        }
    }

OriginalGriff

Как и я-но в данном случае мне нужен был именно тот код, который он использовал.

Graeme_Grant

Я только что упомянул об этом, так как он может не знать об этом, и может возникнуть другое странное поведение.