私はトレイから実行できる多くのフォームを持つアプリケーションを持っています。しかし、ユーザーが2つのフォームを実行すると、最後のフォームだけが閉じられます。 2番目のフォームが閉じられると、最初のフォームが再び動作します。多くのフォームを動作させるにはどうすればよいですか?
ウィンドウ内の他のプログラム(たとえば、同じWebブラウザの多くのウィンドウ)のように、常に多くのフォームを動作させる方法はありますか?
私はインターネット上で見つけたコードの一部です。私はそれを見せたり、隠したりするために使っています。
public MyApplicationContext()
{
MenuItem SmsMenuItem = new MenuItem("SMS", new EventHandler(ShowSms));
MenuItem ExitMenuItem = new MenuItem("Wyjdź", new EventHandler(Exit));
MenuItem HistoryMenuItem = new MenuItem("Historia", new EventHandler(ShowHistory));
NotifyIcon notifyIcon = new NotifyIcon();
notifyIcon.Icon = SMSapp.Properties.Resources.Icon1;
notifyIcon.ContextMenu = new ContextMenu(new MenuItem[] { SmsMenuItem, HistoryMenuItem, ExitMenuItem });
notifyIcon.Visible = true;
}
void ShowSms(object sender, EventArgs e)
{
if (Globals.globals.Set.DBConn)
{
UnitOfWork uow = new UnitOfWork();
using (SmsForm sm = new SmsForm(uow))
{
if (sm.Visible)
sm.Focus();
else
sm.ShowDialog();
}
}
else
{
using (SmsForm sm = new SmsForm())
{
if (sm.Visible)
sm.Focus();
else
sm.Show();
}
}
}
void ShowHistory(object sender, EventArgs e)
{
if (Globals.globals.Set.DBConn)
{
UnitOfWork uow = new UnitOfWork();
using (HistoryForm sm = new HistoryForm(uow))
{
if (sm.Visible)
sm.Focus();
else
sm.ShowDialog();
}
}
else
{
using (HistoryForm sm = new HistoryForm())
{
if (sm.Visible)
sm.Focus();
else
sm.ShowDialog();
}
}
}
void Exit(object sender, EventArgs e)
{
notifyIcon.Visible = false;
Application.Exit();
}
新しいフォーム –
を開いたときに 'ShowDialog()'の代わりに 'Show()'を使ってみてください。それは私がやった最初のことでした。しかし、ウィンドウが表示され、すぐに消えます。 – AnotherSimpleName
'ショー'が正しいです。それが機能するように助けが必要な場合は、[mcve] –