各日付のツールチップを表示する .Net WinForms でカレンダー コントロールを作成しています。
ツールチップをいつ表示するかを決定する最良の方法は何ですか?
すぐにMouseMove
表示すると邪魔になるので、各日付セルにマウスを乗せると表示されるようにしたいです。
イベントはのMouseHover
後の最初のホバーでのみ発生するMouseEnter
ため、使用できません。
これを行う最善の方法は何ですか?
編集:私はWinFormsを使用しています
Enter と Hover の間の遅延時間はSystemInformation.MouseHoverTimeで指定されます。
何らかの理由で、使用している UI フレームワークのビルトイン ツールチップ処理コードが十分でない場合は、MouseMove ごとにタイマーをスピンアップし、起動時にツールチップを表示することができます。明らかに、長い一連の「ツールチップの雨」を防ぐために、マウスを動かすたびにタイマーをリセットする必要があります。
ツールチップの動作を制御するため、ToolTip クラスの AutoPopDelay、InitialDelay、および ReshowDelay プロパティを見てください。
私は通常、何か「感じる」ものが得られるまで値をいじります。ツールチップがすぐに表示されるのは面倒ですし、短いツールチップの場合、すぐに消えてしまうのも面倒です。非常に長いツールチップの場合、たとえば、いくつかの段落 (はい、設計上の決定が不十分ですが、読む情報がたくさんある場合は、少なくとも私に読ませてください!) マウスが静止している限り、開いたままにする必要があります。
MSDNのツールチップの例では、次の値が示されます。
AutoPopDelay = 5000;
InitialDelay = 1000;
ReshowDelay = 500;
// Force the ToolTip text to be displayed whether or not the form is active.
ShowAlways = true;
コメントで述べたように、ポスターはツールチップをプログラムでトリガーしたいと考えています。そのためには、ToolTip.Show( ) を呼び出す必要があります。遅延効果を得るには、マウスが静止している時間をカウントするタイマーを実行する必要があります。マウスがコントロール内に入ったり、離れたり、移動したりするたびに、この時間をリセットする必要があります。
使用しているテクノロジ (ASP.NET? フォーム? WPF?) を知っておくと役に立ちます。ツールチップを実装する方法はすべて異なるためです。
ただし、いずれの場合も、それを行う組み込みの方法があるため、独自のコードを記述する必要はまったくない場合があります。
あなたの状況が非常にカスタマイズされているため、独自のコードを記述する必要がある場合は、カレンダーで数字をどのように表現しているかについてもっと知る必要があります.
最後に: あなたは本当にこれを尋ねたわけではありません。また、それはあなたが制御できるものではないかもしれませんが、そもそもツールチップがカレンダー情報を表示する最善の方法であるかどうかを自問することをお勧めします。スペースが非常に狭い場合、答えは「はい」かもしれませんが、カレンダーのイベント (または各イベントの最初の数語) を表示するのに十分なスペースがあれば、ユーザーは「全体をスクラブする」必要がなくなります。カレンダー」(つまり、各日付を個別にロールオーバー)。
-ダン