2010-12-09 1 views
3

タスクバートレイでホットキーと起動オプションを使用してアプリケーションを作成しようとしています。ShowInTaskbarを使わずに起動時にC#Hide()をfalseに設定する

ここで問題は、ロードイベントでthis.Hide()を使用しても効果がないことです。私はthis.ShowInTaskbar = falseを追加することができますが、それを再び真に設定してウィンドウを表示すると、自分自身のホットキーが無効になります。

起動時にフォームを非表示にする方法や、ホットキーが登録解除されないようにする方法はありますか?ホットキーが無効になっている、上記のコードは、ホットキーがまだ動作した後

private void frmMain_Load(object sender, EventArgs e) 
{ 
    if (StartBG()) 
    { 
     this.Hide(); 
     this.ShowInTaskbar = false; 
     notifyIcon.Visible = true; 
     notifyIcon.ShowBalloonTip(3000, "Kore screenshots", "The application is started and will run on the background.", ToolTipIcon.Info); 
    } 
} 

、このコードの後

private void showform() 
{ 
    this.Show(); 
    this.ShowInTaskbar = true; 
    notifyIcon.Visible = false; 
    this.WindowState = FormWindowState.Normal; 
} 

私のコードは、フォームを非表示にします。

答えて

4

私が過去に行ったことは、常に最小化されたShowInTaskbar false(ユーザーは表示されないように)というフォームを作成することです。このフォームはNotyifyIconを所有しています。

次に、私が表示したい任意のUIを、必要に応じて表示/非表示する別々のフォームとして開発します。私は、これは、タスクバーに表示される/隠される/通知される可能性のある1つのフォームを取得しようとするよりも、きれいに機能することがわかります。

3

フォームが表示されないようにするが、通知アイコンが機能するようにハンドルを作成しないようにするには、SetVisibleCore()をオーバーライドする必要があります。

protected override void SetVisibleCore(bool value) { 
     if (value && !this.IsHandleCreated) { 
      value = false; 
      CreateHandle(); 
      // Put your Load event code here 
      //... 
     } 
     base.SetVisibleCore(value); 
    } 

LoadイベントまたはOnLoad()メソッドは、実際にフォームが実際に表示されるまで実行されないように注意してください。したがって、そこにあるコードをこのオーバーライドに移動します。

関連する問題