NotifyIcon にあるような .NET ToolTip オブジェクトに閉じるボタンを追加する方法を探しています。Show() メソッドを使用してプログラムで呼び出されるメッセージ バルーンとしてツールチップを使用しています。それはうまくいきますが、onclick イベントやツールチップを閉じる簡単な方法はありません。コード内の別の場所で Hide() メソッドを呼び出す必要があり、ツールチップ自体を閉じることができるようにしたいと考えています。マネージ コードとアンマネージ コードを使用して Windows API でこれを実行するバルーン ツールチップがネット上にいくつかあることは知っていますが、快適な .NET の世界にとどまりたいと思います。.NET アプリケーションを呼び出すサード パーティ アプリケーションがあり、管理されていないツールチップを表示しようとするとクラッシュします。
Crackerjack
質問する
3862 次
3 に答える
4
既存のものをオーバーライドして onDraw 関数をカスタマイズすることで、独自のツール ヒント ウィンドウを実装してみることができます。ボタンを追加しようとしたことはありませんが、以前にツールチップで他のカスタマイズを行ったことがあります。
1 class MyToolTip : ToolTip
2 {
3 public MyToolTip()
4 {
5 this.OwnerDraw = true;
6 this.Draw += new DrawToolTipEventHandler(OnDraw);
7
8 }
9
10 public MyToolTip(System.ComponentModel.IContainer Cont)
11 {
12 this.OwnerDraw = true;
13 this.Draw += new DrawToolTipEventHandler(OnDraw);
14 }
15
16 private void OnDraw(object sender, DrawToolTipEventArgs e)
17 {
...Code Stuff...
24 }
25 }
于 2008-10-28T22:31:46.057 に答える
3
TTS_CLOSE スタイルを設定する独自の CreateParams を使用して ToolTip クラスをサブクラス化できます。
private const int TTS_BALLOON = 0x80;
private const int TTS_CLOSE = 0x40;
protected override CreateParams CreateParams
{
get
{
var cp = base.CreateParams;
cp.Style = TTS_BALLOON | TTS_CLOSE;
return cp;
}
}
TTS_CLOSE スタイルには TTS_BALLOON スタイルも必要であり、ツールヒントで ToolTipTitle プロパティも設定する必要があります。
このスタイルを機能させるには、アプリケーション マニフェストを使用して Common Controls v6 スタイルを有効にする必要があります。
新しい「アプリケーション マニフェスト ファイル」を追加し、<assembly> 要素の下に次を追加します。
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
少なくとも Visual Studio 2012 では、この内容は既定のテンプレートに含まれていますが、コメント アウトされています。
于 2012-12-10T16:50:57.090 に答える
2
ToolTip クラスの実装で CreateParams メソッドをオーバーライドすることができます...つまり
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.Style = 0x80 | 0x40; //TTS_BALLOON & TTS_CLOSE
return cp;
}
}
于 2011-02-11T17:37:27.363 に答える