Выполнять действие при удержании кнопки и другое действие при отпускании кнопки

#c# #visual-studio #xaml #windows-10-iot-core

#c# #visual-студия #xaml #windows-10-iot-core #visual-studio

Вопрос:

Я использую Visual Studios для создания приложения Windows IoT. В графическом интерфейсе приложения есть кнопка, которая при удержании нажатой с помощью щелчка мыши или нажатия клавиши выполняет действие, в этом случае текстовое поле изменяет свой текст и запускается движок. Когда кнопка отпущена, текстовое поле изменяет свой текст и двигатель останавливается.

Я создал кнопку в файле .xml и событие button_holding в файле .cs, но это не выполняет никаких действий.

Ответ №1:

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

Вы можете использовать PointerPressedEvent и PointerReleasedEvent для достижения этого. Этот код работает для меня:

 public MainPage()
{
    this.InitializeComponent();
    myButton.AddHandler(PointerPressedEvent, new PointerEventHandler(myButton_PointerPressed), true);
    myButton.AddHandler(PointerReleasedEvent, new PointerEventHandler(myButton_PointerReleased), true);
}

private void myButton_PointerPressed(object sender, PointerRoutedEventArgs e)
{
    myText.Text = "Running...";
}

private void myButton_PointerReleased(object sender, PointerRoutedEventArgs e)
{
    myText.Text = "Stopped";
}
  

Ответ №2:

Вы можете использовать событие удержания, чтобы получить аналогичные наведение курсора мыши и наведение курсора мыши в традиционных WinForms, например

 private void Button_Holding(object sender, HoldingRoutedEventArgs e)
        {
            if (e.HoldingState == Windows.UI.Input.HoldingState.Started)
            {
                //do things when button on hold
            }
            else if (e.HoldingState == Windows.UI.Input.HoldingState.Completed ||
                e.HoldingState == Windows.UI.Input.HoldingState.Canceled)
            {
                //do things when button release
            }
        }