C# WinForm KeyPress Клавиша Enter не срабатывает после нажатия ссылки - PullRequest
0 голосов
/ 29 мая 2020

Вот простой код в windowsForm

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
       MessageBox.Show("LOLOLO");
       if (e.KeyChar == 13)
       {
         panel3.Visible = true;
       }
    }

И у меня есть панель управления со ссылкой, которая закрывает эту панель

private void linkLabel2_Click(object sender, EventArgs e)
{
   panel3.Visible = false;
}

Я работаю Когда я нажимаю любую клавишу, она показывает мне MessageBox, но когда я нажимаю ENTER, моя панель открывается. Проблема в том, что когда я щелкнул мышью ссылкуLabel2, чтобы закрыть панель, любые клавиши запускают событие keyPress, кроме клавиши ENTER. Когда я нажимаю ENTER, делать нечего, событие keyPress не срабатывает

Как это исправить?

Ответы [ 2 ]

0 голосов
/ 30 мая 2020

Ваш код не работает, я добавил это ActiveControl = null; внутри события linkLabel2_Click и теперь работает отлично!

private void linkLabel2_Click(object sender, EventArgs e)
{
   this.ActiveControl = null;
   panel3.Visible = false;
}
0 голосов
/ 29 мая 2020

Прежде всего вы должны включить свойство ключа Form.KeyPreview в form1.

В конце, когда вы нажимаете linkLabel2, он получает фокус и остается там. Вы должны оставить фокус. Я добавил событие и, чтобы оставить фокус с linkLable2, просто когда вы нажимаете Enter, он больше не вызывает linkLabel2. Если он работает, отметьте его как прочитанное и проголосуйте за. Спасибо

private void linkLabel2_Leave(object sender, EventArgs e)
        {

        }

private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            panel3.Visible = false;

            linkLabel2_Leave(linkLabel2, null);
        }
...