この質問は、this my questionに関連しています。今私は私のクラスでフォームを持っており、ユーザーがボタンをクリックするとフォームを表示(または非表示)します。それで大丈夫です。しかし、元のフォームを使って移動したり、元のフォームのどこかをクリックしたりすると、フォームを非表示にしたい。新しいフォームは元のフォームの後ろにあります。私はロストフォーカスや他のもののようなイベントを試みていましたが、それは助けにはなりませんでした。だから、私は自分のコントロールからチェックするトリックが必要だと思うが、パラレンフォーム(原型)や他のハックでクリックがあった場合。私はコードを置くことが最善であることを知っていますが、私は多くの行を持っていますので、私は一般的な方法で私を助け、私のアプリにapplicateしようとするなら、最善の方法があると思います。他のコントロールがフォーカスしているときにフォームを隠す
2
A
答えて
0
グローバルなマウスとキーボードhookで行うことができます。実際には、十分に文書化され、よく構造化された.NET APIに包まれています。CodePlex
ここに移動してダウンロードしてください。
_mouseListener = new MouseHookListener(new GlobalHooker());
_mouseListener.MouseMove += HandleGlobalHookMouseMove;
_mouseListener.Start();
ここで重要なのは、あなただけではなく、あなたの窓の範囲内で、デスクトップ上のマウスの移動ANYWHERE MouseMoveイベントをいつでも受けることである。次に、グローバルマウスフックを設定します。
private void HandleAppHookMouseMove(object sender, MouseEventArgs e)
{
if (this.Bounds.Contains(e.Location))
{
HandleEnter();
}
else
{
HandleLeave();
}
}
MouseClick
のいずれかを設定することもできます。この2つの組み合わせにより、マウスが原点の上を移動したり、マウスがクリックされたりしたときにいつでも決定することができます。試したLostFocus
やその他のイベントとは異なり、フォーカスは関係ありません。
0
以下は役に立ちますか?
public partial class Form1 : Form
{
Form f2 = new Form2();
public Form1()
{
InitializeComponent();
f2.Show();
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (this.ClientRectangle.Contains(e.Location) && f2.Visible) { f2.Hide(); }
}
private void button1_Click(object sender, EventArgs e)
{
f2.Visible = !f2.Visible ? true : false;
}
}
関連する問題
- 1. msアクセス2007年にフォーカスを持っているコントロールを隠す
- 2. 子コントロールにフォーカスがあるときにフォーム上にKeyUpイベントをキャプチャします。
- 3. 他のウィンドウがフォーカスしているときにポップアップコントロールを非表示にする
- 4. コントロールがあるフォームにフォーカスがあるときにフォーム(またはコントロール)キーダウンイベントが発生しないのはなぜですか?
- 5. 'Tab'キーを押したときに次のコントロールにフォーカスする
- 6. 鉄フォームを送信してフォーカスが紙入力のときに
- 7. MDI内のElementHostのWPFコントロールを介してタブ移動すると、他のMDI子にフォーカスが移動する
- 8. 隠しコントロールが
- 9. イベント処理(フォームを隠しているときに検出)
- 10. コントロールが表示されているときにテキストボックスにフォーカスを移動
- 11. フォーカスが設定されているときにASP.NETネストされたコントロールのスクロール
- 12. Windowsフォームのコントロールにフォーカスを強制する方法
- 13. 他の要素がフォーカスされていると入力がフォーカスを失う
- 14. DataGridViewにフォーカスがないとき、DataGridViewComboBoxCellコントロールを最初のクリックでドロップする
- 15. MS Access:他のコントロールでフォーカスが失われたときにサブフォームを非表示にする
- 16. WebBrowserコントロールがフォーカスを取得しない
- 17. ユーザーがテキスト入力コントロールを他のアプリケーションにフォーカスしているかどうかを知る方法
- 18. コントロールをタブコントロールにフォーカスする
- 19. Windowsフォーム:フォーカスされたコントロールの変更を検出します。
- 20. フォームが隠されているときにキーダウンイベントを取得する
- 21. MVVM - バインドされたプロパティが存在しないときにコントロールを隠す
- 22. コンボボックスの項目は他のコントロールの背後に隠れています。
- 23. チェック隠しフォーム入力値がフォーム上で、私は隠し入力してフォームを持っている
- 24. マウスをクリックすると、デフォルトでフォーカスを移動できるコントロールにキーボードのフォーカスが移動されますか?
- 25. すべてのコントロールを無効にした後、WinFormsフォームのフォーカスが部分的に失われる
- 26. 他のフォームを開いている間、あるフォームにフォーカスを置く方法は?
- 27. C# - テキストフィールドがフォーカスを取得したとき(他のプログラムでも)?
- 28. 他のプログラムがフォーカスを取得しないようにする
- 29. カスタム検証エラーメッセージが他のコントロールと重複しています
- 30. ユーザーコントロールは親フォームのコントロールにフォーカスをどのように渡しますか?