форма идет в фоновом режиме - PullRequest
0 голосов
/ 28 июля 2011

У меня есть форма, и я делаю showdialog на этом.Это похоже на окно сообщения.Я делаю что-то вроде

    msgBox = new MsgBox();
    if (msgBox.InvokeRequired)
    {
      msgBox.Invoke(new ShowMsg(ShowMessage));
    }
    else
    {
      ShowMessage();
    }

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

Ответы [ 5 ]

2 голосов
/ 28 июля 2011

Используете ли вы потоки?

Если ваши потоки должны вызывать родительскую форму, а не сам msgbox.

Form frm = new Form();
if (parent.InvokeRequired)
{
    parent.Invoke(new ThreadStart(() =>
        {
            frm.ShowDialog();
        }));
}
else
{
    frm.ShowDialog();
}

Если вы работаете без потоков, просто удалите вызов и объяснитенемного, что делают ShowMessage и msgbox.

1 голос
/ 28 июля 2011

попробуйте использовать

Form.BringToFront();

http://msdn.microsoft.com/de-de/library/system.windows.forms.control.bringtofront%28v=vs.80%29.aspx

0 голосов
/ 29 июля 2011

Не уверен, как выглядят ваши методы ShowMsg и ShowMessage, но попробуйте это:

msgBox = new MsgBox();
if (msgBox.InvokeRequired)
{
  msgBox.Invoke((MethodInvoker)delegate() { ShowMessage(); });
}
else
{
  ShowMessage();
}
0 голосов
/ 28 июля 2011

Как вы звоните ShowDialog?Вы должны передать главное окно (или любого из его дочерних элементов) методу ShowDialog, чтобы оно имело правильное родительское окно.

0 голосов
/ 28 июля 2011

Какой тут беспорядок !!

Является ли MsgBox вашим пользовательским типом, производным от класса Form? если это так, вы можете просто вызвать его метод ShowDialog, чтобы он отображался модально.

Если вы не можете, пожалуйста, поделитесь контентом метода ShowMessage.

...