C # ShowDialog вызывает другой ShowDialog - PullRequest
4 голосов
/ 02 ноября 2010

Я не уверен, разрешено ли это, но у меня есть основная форма, которая вызывает другую форму с ShowDialog, которая пытается вызвать другую форму так же.

Так, например:

form1 -> form2.showdialog -> form3.showdialog

Я получаю сообщение об ошибке при показе формы 3:

var ssscu = new SSS.SssTwainSimple.MainForm();
ssscu.ShowDialog();

Это ошибка:

{"Форма showDialog пыталась установить неподходящую форму в качестве ее владельца. Формы не могут владеть собой или своими владельцами. \ R \ nПараметр параметра: владелец"}

Я не уверен, что понимаю, что такоепроблема в том, не могу ли я вызвать showdialog из формы, которая является диалогом?

Спасибо, Eroc

Ответы [ 3 ]

5 голосов
/ 02 ноября 2010

Разрешено ли мне вызывать showdialog из формы, являющейся диалоговым окном?

Вам, безусловно, разрешено, это должно работать.

Но я думаю, что странно, что вы создаете диалоговую форму с именем MainForm.

Я ожидаю, что это вызвано тем, что происходит в событиях.Что mainForm делает в своем конструкторе / Load-event?

3 голосов
/ 02 ноября 2010

Это очень необычное исключение. Форма уже имеет владельца, когда она была создана конструктором. Вы не использовали переопределение ShowDialog (владельца), поэтому Windows Forms должен найти владельца для себя. Он находит точно такую ​​же форму назад. Это технически возможно, но вам придется написать довольно странный код. Чтобы диагностировать это, добавьте этот код в форму:

    protected override void OnHandleCreated(EventArgs e) {
        base.OnHandleCreated(e);
    }

И установить на нем точку останова. Если мои предположения верны, это прервет до вызова ShowDialog. Посмотрите на стек вызовов, чтобы увидеть, какой оператор создает это окно.

3 голосов
/ 02 ноября 2010

Попробуйте заменить .ShowDialog(); на .ShowDialog(this);

Редактировать: Я не пробовал себя, но именно здесь я бы начал искать.

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