Кнопка Escape для отмены действия - PullRequest
0 голосов
/ 15 июня 2011

Привет в настоящее время у меня есть 2 кнопки, обновление и изменение. Кнопка обновления изначально скрыта.

Когда я нажимаю кнопку «Изменить», кнопка «Изменить» скрывается, появляется кнопка «Обновить», текстовое поле становится недоступным только для чтения. Затем при нажатии кнопки обновления будет скрыта кнопка обновления, и появятся кнопки изменения, текстовое поле будет скрыто, и появится метка.

Как я могу изменить код, чтобы:

Когда я впервые нажимаю кнопку «Изменить», и я могу обновить значения текстового поля, и в этом состоянии, если я нажму кнопку «ESC», я скрою кнопку «обновить», и текстовое поле будет доступно только для чтения?

Ниже приведен текущий код:

private void ProjectnumberupdateButton_Click(object sender, RoutedEventArgs e)
        {
            ProjectnumberresultLabel.Content = ProjectnumberTextBox.Text;
            ProjectnumberupdateButton.Visibility = Visibility.Hidden;
            ProjectnumberTextBox.Visibility = Visibility.Hidden;
            ProjectnumbermodifyButton.Visibility = Visibility.Visible;
            PreviousbuildversionresultLabel.Content = "" + MajorversionresultLabel.Content + "." + MinorversionresultLabel.Content + "." + ProjectnumberresultLabel.Content + "." + BuildnumberresultLabel.Content;
        }


private void ProjectnumbermodifyButton_Click(object sender, RoutedEventArgs e)
{
    ProjectnumberupdateButton.Visibility = Visibility.Visible;
    ProjectnumberTextBox.Visibility = Visibility.Visible;
    ProjectnumbermodifyButton.Visibility = Visibility.Hidden;
}

EDIT: Это то, что я сделал до сих пор:

    private void MajorversionTextBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Escape)
        {
            MajorversionupdateButton.Visibility = Visibility.Hidden;
            MajorversionTextBox.Visibility = Visibility.Hidden;
            MajorversionmodifyButton.Visibility = Visibility.Visible;
        }
    }

    private void MajorversionmodifyButton_Click(object sender, RoutedEventArgs e)
    {
        MajorversionupdateButton.Visibility = Visibility.Visible;
        MajorversionTextBox.Visibility = Visibility.Visible;
        MajorversionmodifyButton.Visibility = Visibility.Hidden;
        Keyboard.Focus(MajorversionTextBox);
        MajorversionTextBox_KeyDown(); // this is the line. i have trouble hooking this up
    }

Извините, я изменил номер проекта на Majorversion.

Ответы [ 3 ]

1 голос
/ 15 июня 2011

Вы можете написать событие OnKeyPress для окна и отследить нажатие кнопки ESC.Внутри этого вы можете написать логику для переключения видимости элементов управления.

0 голосов
/ 15 июня 2011

Вы можете установить фокус на текстовое поле при нажатии кнопки «Изменить», а затем использовать событие KeyDown для текстового поля:

private void ProjectnumberTextBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Escape)
    {
       ProjectnumberTextBox.ReadOnly = true;
       ProjectnumbermodifyButton.Visibility = Visibility.Hidden;
    }
}
0 голосов
/ 15 июня 2011

Вы можете перехватить / обработать событие KeyDown, проверить, была ли нажатая клавиша кнопкой Escape, и оттуда внести свои изменения в кнопки и текстовые поля в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...