2017-07-13 11 views
0

私のアプリケーションを常にトップにしたいと思っています。だから私は新しいプログラムを開くと、これを持っていてもトップになります.TopLevelの値をtrueに設定すると、アプリケーションはそれ以上トップにはならず、トップに戻ります。 私はタイマーでこれを行うことができますが、私は彼らがより良い方法であることを望んでいます。トップレベルの値が変更されたときのイベントを作成する

+0

しかし、マルチタスク環境でどのウィンドウがユーザーに表示されるかを判断する必要がありますか? –

+0

これは、この機能を有効にするチェックボックスがあるオーバーレイアプリケーションです。 –

+0

誰かが同じプログラムを書いたらどうなりますか? – LarsTech

答えて

3

あなたはuser32.dllにあるメソッドを使用することができます。

using System.Runtime.InteropServices; 

あなたはこれらの変数を必要としています:

private static readonly IntPtr HWND_TOPMOST = new IntPtr(-1); 
private const UInt32 SWP_NOSIZE = 0x0001; 
private const UInt32 SWP_NOMOVE = 0x0002; 
private const UInt32 TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE; 

は、ウィンドウの位置を設定するためにこれを使用し、あなたのコードに続いて... DLLから

[DllImport("user32.dll")] 
[return: MarshalAs(UnmanagedType.Bool)] 
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); 

の方法をインポート一番上のウィンドウに移動します。

SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS); 

私はこれがあなたを助けてくれることを願っています!

関連する問題