2012-02-09 11 views
0

可能性の重複:
How to make the startup form initially invisible or hidden起動時にウィンドウを表示させないにはどうしたらいいですか?

私のアプリケーションは、システムトレイを持って、私はウィンドウが起動時に表示される必要はありません。

どうすればこの問題を解決できますか?


これはデフォルトのWindowsフォームアプリケーションです。フォームが閉じているとき

私はnotifyIconとcontexualMenuStrip

の上にドラッグ、アプリケーションが(どちらかのことをしたくない)に終了します。しかし、アプリケーションが起動されると、Windowsフォームも表示されます。では、起動時にフォームを起動しないでください(ウィンドウを閉じても終了しません)。

+0

ソースコードを表示してください...何を試しましたか?何がうまくいかないの? – Yahia

+0

起動フォームの 'Visible'プロパティを' false'に設定できませんか?または、デフォルトのウィンドウの位置を非表示に設定しますか?このようなことを覚えていますが、しばらくの間はWinFormsに触れていません。 – Yuck

+0

フォームのVisibleプロパティはありません。 –

答えて

1

基本的には、それを達成するためにSetVisibleCore()を上書きする必要があります...別のオプションは、falseShowInTaskbarを設定し、Application.RunApplicationContextを使用することです。

一部の参照リンクとサンプルコード:

+0

このアプローチの1つの副作用は、初期化コードが起動されないことです。たとえば、MainForm_Loadで起動するタイマーがある場合、これは有効になることはなく、Tickイベントは発生しません。 このように動作するWindows.Forms.Timerだけでなく、結果が同じであることを確認するために、System.Timers.Timerを試してみました。 – Digvijay

0

答えはあなたのメインフォームを隠すことではなく、それを表示しない/最初にをロードすることです。

一つの方法は、カスタムApplicationContextを作成することです:

public static class Program 
{ 
    public static void Main(string[] arguments) 
    { 
     var context = new NotifyIconApplicationContext(); 
     context.Icon.Icon = new Icon(PATH_TO_ICON_FILE_HERE); 
     context.Icon.Visible = true;  
     Application.Run(context); 
    } 
} 

class NotifyIconApplicationContext : ApplicationContext 
{ 
    public NotifyIconApplicationContext() 
    { 
     Icon = new NotifyIcon(); 
    } 
    public NotifyIcon Icon { get; set; } 
} 

あなたは、その後など、メニューを示す、あなたのメインフォームを開くようなものを可能にする前Application.Run(context)ラインにあなたの通知アイコンにハンドラを添付することができ、 ..

関連する問題