2012-04-20 23 views
0

私はWindows Formsアプリケーションを持っています。ユーザーが特定のアクションを実行したときに、「ポストイットノート」タイプのものを表示したいと考えています。C#:親コントロールのOnClickイベントを一時的に取得する

例:ユーザーはコントロールを自動的に非表示にする何かを行います。

私のアプリケーションは次のようにしてください: oポップアップで、何が起こったのかを説明するメモをポップアップします。 oユーザーがフォーム上の任意の場所をクリックしたときに、そのメモを再度非表示にします。

私はノートを簡単なパネルとして実装しました。ラベルにはラベルが付いていて、特定のことが起きたときに表示され、非表示になっています。

しかし、私は親UserControlのOnClickイベントをキャプチャしているようではありません。親コントロールはネストされたコントロールで、分割されたコンテナがあり、その一辺にはパネルとタブコントロールがあり、それぞれにさまざまなものが含まれたユーザーコントロールが含まれています。

すべての子コントロールのclickイベントを処理するだけでなく、親コントロールのどこかをクリックしたときにそのメモを非表示にするために使用できる親コントロールでキャプチャできるイベントは誰も考えられますか?

おかげで、 のRik

+0

フォームのmousedownは十分ではありませんか? – BugFinder

+0

この単純なシナリオでは、Windows.Forms.Timerを使用しないでください。 5秒後(または設定可能な値)、Tickイベントでポップアップが閉じられます – Steve

答えて

5

これは、キャプチャプロパティの目的です。メモをポップアップすると、に設定されます。マウスがウィンドウの外側に移動しても、マウスイベントはコントロールに送られます。これは、たとえば、コンボボックスのドロップダウンリストが機能する方法でもあります。ワンクリックで効果があることに注意してください。

ポップアップにコントロールが含まれている場合、マウスキャプチャは解決策ではありません。それを所有フォームにして、Deactivateイベントのイベントハンドラで単にClose()を呼び出します。

-1

そこには、Windowsフォームのイベントのbublingされますが、子イベントをクリックしながら、イベントが子供のために提起され、その後、親のために。 trueに "handleEvnet"プロパティを指定しない限り。イベントが親に到達するまで、それを偽にしておきます。

+0

[Windowsフォーム 'Control.Click'](https://msdn.microsoft.com/en-us/library/system.windows。 forms.control.click%28v = vs.100%29.aspx)イベントは、['EventArgs'クラス]のインスタンスのみを提供します(https://msdn.microsoft.com/en-us/library/system.eventargs% 28v = vs.100%29.aspx)、これは 'HandleEvent'や' Handled'のようなプロパティを持っていません。 –

関連する問題