Проблема с MessageBox (es) - PullRequest
       8

Проблема с MessageBox (es)

5 голосов
/ 04 января 2011

Я испытываю странное поведение при использовании MessageBox (ов) в программе на C # / WPF.

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

Вот код нажатия кнопки

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        MessageBoxResult result;
        do
        {

            result = MessageBox.Show(this, "Please Click here under", "TestBugMessageBox", MessageBoxButton.OKCancel, MessageBoxImage.Information, MessageBoxResult.None);
            if (result.Equals(MessageBoxResult.OK))
            {
                result = MessageBox.Show(this, "Is it the first time you see it ?", "TestBugMessageBox", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.None);
            }
        } while (result.Equals(MessageBoxResult.Yes));
    }

Затем поместите окна в центр экрана (для того, чтобы MessageBox покрывал некоторые метки)

Нажмите «Да» три раза, и «Нет» в последний раз, и вы увидите проблему (я надеюсь):

Окно сообщения будет отображаться в приложении.

Не могли бы вы сообщить мне, что не такэто?

Ответы [ 2 ]

1 голос
/ 22 февраля 2011

Вы отлаживаете и остаетесь на точке останова в цикле do.. while? Если ответ «да», вы должны удалить точки останова: wpf не может перерисовать поверхность вашего окна, если вы заблокируете цикл в главном потоке.

EDIT: Даже отладка и остановка ... пока я не смог воспроизвести описанное поведение. Проблема, о которой я говорил, заключается только в остановке потока пользовательского интерфейса (например, при переопределении методов Measure || Arrange и их отладке), а не в основном потоке. К сожалению.

0 голосов
/ 24 января 2011

Я только что попробовал это на 64-битной мультимониторной системе Windows 7 в Visual Studio 2010 с .NET 4.0 C # / WPF, и все прошло нормально для меня.

Единственное отличие - это мой MessageBox.не принимать объект 'this'.

Используете ли вы System.Windows.MessageBox?

Может быть, для этого просто требуется обновление Windows и / или переустановка .NET Framework.

...