Здравствуйте, Quaker_AL, Вы писали:
Q_A>Может кто-нибудь подскажет как мимнимизировать главное окно при условии что открыт модальный диалог,
Q_A>что-бы при востановлении главного окна модальный диалог не пропадал. А то он закрывается в момент минимизации главного окна.
Может сделать ему
Hide()...
Never underestimate those behind you...
Покажите на примере ниже как Вы сворачиваете главное окно, при условии, что открыто модальное окно:
using System;
using System.Windows.Forms;
class MainForm: Form
{
public MainForm()
{
Button btShowModal = new Button();
btShowModal.Click += new EventHandler(btShowModal_Click);
btShowModal.Parent = this;
}
static void Main()
{
Application.Run(new MainForm());
}
Form modalForm;
private void btShowModal_Click(object sender, EventArgs e)
{
modalForm = new Form();
modalForm.ShowDialog();
}
}
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Дополнительно к этому, у меня есть еще Таймер, который и минимизирует основное окно:
private void Timer_Tick(object sender, System.EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
using System;
using System.Windows.Forms;
class MainForm: Form
{
Timer timer = new Timer();
Form modalForm = new Form();
bool needToShow;
public MainForm()
{
modalForm.Closed += new EventHandler(modalForm_Closed);
Button btShowModal = new Button();
btShowModal.Click += new EventHandler(btShowModal_Click);
btShowModal.Parent = this;
timer.Interval = 5000;
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
}
static void Main()
{
Application.Run(new MainForm());
}
private void btShowModal_Click(object sender, EventArgs e)
{
modalForm.ShowDialog();
needToShow = true;
}
private void timer_Tick(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Normal)
WindowState = FormWindowState.Minimized;
else
{
WindowState = FormWindowState.Normal;
if (needToShow)
modalForm.ShowDialog();
}
}
private void modalForm_Closed(object sender, EventArgs e)
{
needToShow = false;
}
}
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Все это конечно хорошо, если мы хотим обмануть пользователя. Но смысл в другом, не дать продолжить выполнение кода:
private void btShowModal_Click(object sender, EventArgs e)
{
modalForm.ShowDialog();
needToShow = true;
}
...после modalForm.ShowDialog(). Ведь там может быть заложена логика, которой нельзя пренебречь, а также логика может быть заложена и в самом модальном диалоге.
Может быть, диалогу при создании указать какой-нибудь стиль специфичный или еще что-нибудь. Ведь стандартные диалоги типа OpenFileDialog не уничтожаются при минимизации главного окна.
Вот в Delphi к примеру все работает как надо...
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
>после modalForm.ShowDialog(). Ведь там может быть заложена логика, которой нельзя пренебречь
Логика — всмысле действия, выполняющие в OnLoad'e?
В конструктор не получится перенести эту логику?
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Логика слишком сложная чтобы ее перенести в конструктор.
Я схожусь во мнении что либо это глюк (т.к на чистом Win32 API и даже на Visual С++ MFC все работает правильно), либо надо играть с настройками модального окна.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение