2009-03-26 6 views
10

私はいくつかの常時オントーストトーストをフォームとして作成しています。開いたときに開いているときに他のフォームからフォーカスを取り除きたいと思います。これどうやってするの?フォーカスを持たないC#でフォームを開く

おかげ

+1

の可能性のある重複した[フォーカスを盗むせずにフォームを表示?](http://stackoverflow.com/questions/156046/show-a-form-without-stealing-フォーカス) – Breeze

答えて

12
protected override bool ShowWithoutActivation 
{ 
    get 
    { 
     return true; 
    } 
} 

オーバーライドフォームのコードでこのプロパティと、それはあなたのためのトリックを行う必要があります。

+4

フォームがTopMostプロパティをtrueに設定し、このオーバーライドを最上位フォームで使用し、CreateParamsをオーバーライドし、ExStyleでWS_EX_TOPMOSTを設定する必要がある場合は、これは機能しません。 –

10

アダロンの&アロンの上記の情報を使用して数分かかりましたが、ついに私のために働くようになりました。私がしなければならないことの1つは、フォームのTop Mostプロパティがfalseに設定されていることを確認することでした。ここで私が使用したコードが...ある

protected override bool ShowWithoutActivation { get { return true; } } 

    protected override CreateParams CreateParams 
    { 
     get 
     { 
      //make sure Top Most property on form is set to false 
      //otherwise this doesn't work 
      int WS_EX_TOPMOST = 0x00000008; 
      CreateParams cp = base.CreateParams; 
      cp.ExStyle |= WS_EX_TOPMOST; 
      return cp; 
     } 
    } 
関連する問題