Обработчик событий щелчка мыши отключает переключатель ToggleButtonC#

Место общения программистов C#
Ответить
Anonymous
 Обработчик событий щелчка мыши отключает переключатель ToggleButton

Сообщение Anonymous »

У меня есть ToggleButton с обработчиком событий PreviewMouseDown. Все работает нормально. Но если я добавлю MessageBox.Show("Message") к этому обработчику, ToggleButton перестанет переключаться в нажатое состояние, то есть свойство IsChecked всегда будет ложным. Почему?

Код: Выделить всё

private void ToggleButton_OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("Message");
}

Минимальный воспроизводимый пример можно создать следующим образом. Сначала создайте проект WPF с помощью командной строки следующим образом:

Код: Выделить всё

dotnet new wpf --name "PreviewMouseDown" -lang "C#"
cd PreviewMouseDown
Затем отредактируйте MainWindow.xaml.cs следующим образом:

Код: Выделить всё

using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;

namespace PreviewMouseDown;

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void ToggleButton_OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("Message");
}
}
И MainWindow.xaml следующим образом: Затем скомпилируйте и запустите следующим образом:

Код: Выделить всё

dotnet build
dotnet run
И вы увидите, что «No PreviewMouseDown» можно включать и выключать, но «With PreviewMouseDown» всегда остается выключенным:
Изображение

Примечание - воспроизведено с помощью net10.0-windows


Подробнее здесь: https://stackoverflow.com/questions/798 ... ton-toggle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»