12

NotifyIcon にあるような .NET ToolTip オブジェクトに閉じるボタンを追加する方法を探しています。Show() メソッドを使用してプログラムで呼び出されるメッセージ バルーンとしてツールチップを使用しています。それはうまくいきますが、onclick イベントやツールチップを閉じる簡単な方法はありません。コード内の別の場所で Hide() メソッドを呼び出す必要があり、ツールチップ自体を閉じることができるようにしたいと考えています。マネージ コードとアンマネージ コードを使用して Windows API でこれを実行するバルーン ツールチップがネット上にいくつかあることは知っていますが、快適な .NET の世界にとどまりたいと思います。.NET アプリケーションを呼び出すサード パーティ アプリケーションがあり、管理されていないツールチップを表示しようとするとクラッシュします。

4

3 に答える 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 に答える