Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > MessageBox закрывает форму


Автор: L1729 23.8.2011, 08:52
На форме после определенных действий открывается msgBox

Код

MessageBox.Show(this, "Достигнут предел кол-ва деталей", "Ошибка в расчетах", MessageBoxButtons.OK, MessageBoxIcon.Stop);


После нажатия кнопки ОК, бокс закрывается а вместе с собой закрывает еще и форму с которой был вызван. Что самое интересное закрывает он ее не всегда, а как то рандомно...
Как быть? Что за беда еще такая ):

Автор: Voyager 23.8.2011, 10:43
Стандартный MessageBox форму не закрывает, ищите причину в другом (например, в коде).

Автор: L1729 23.8.2011, 11:34
Цитата(Voyager @ 23.8.2011,  08:43)
Стандартный MessageBox форму не закрывает, ищите причину в другом (например, в коде).

почему же тогда после обработчика нажатия кнопок бокса форма закрывается?

Автор: jonie 23.8.2011, 12:11
L1729, потому что у вас так написано очевидно же. MessageBox.Show вызывает системную MessageBox функцию, которая никогда ничего не закрывала.

Автор: kin 23.8.2011, 12:58
Цитата(L1729 @  23.8.2011,  08:52 Найти цитируемый пост)
Как быть? Что за беда еще такая ): 

Привет! Для начала,  приведи код до  и, самое главное, после...

Автор: L1729 23.8.2011, 16:18
Цитата(kin @ 23.8.2011,  10:58)
Цитата(L1729 @  23.8.2011,  08:52 Найти цитируемый пост)
Как быть? Что за беда еще такая ): 

Привет! Для начала,  приведи код до  и, самое главное, после...

Код


И вам доброго времени суток

private void nudTake_ValueChanged(object sender, EventArgs e)
        {
            if (giveItem == 1)
            {
                if (nudTake.Value > maxDetailNum - nudBroken.Value)
                {
                    nudTake.Value = maxDetailNum - nudBroken.Value;
                                        System.Windows.Forms.DialogResult result = MessageBox.Show(this, "Достигнут предел кол-ва деталей", "Ошибка в расчетах", MessageBoxButtons.OKCancel, MessageBoxIcon.Stop);
                }
            }
        }


собсно это все что есть... из этого на форме еще один нумерикАпДаун, без абработчиков, форма получает только одно значение maxDetailNum, и все...
собсно в этом то и загвоздка, на всех формах вагон алертов и ни один не закрывает форму на которой открыт, а только этот и то не всегда, обработчики посмотрел все вроде бы нормально... знакомые тоже разводят руками... чудо просто какое-то

Автор: Fortnox 23.8.2011, 16:32
L1729, дебажьте этот кусок кода.

Автор: kin 23.8.2011, 21:09
L1729, собственно, интересно следующее:
1. У формы, владельца MessageBox, определено свойство Form.AcceptButton?
2. Как ведет себя форма, если использовать метод MessageBox.Show без указания владельца, в твоем случае без указателя this?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)