Добавить кнопку закрытия (красный х) в .NET ToolTip - PullRequest
12 голосов
/ 29 октября 2008

Я ищу способ добавить кнопку закрытия в объект .NET ToolTip, аналогичный тому, который есть у NotifyIcon. Я использую всплывающую подсказку в виде всплывающей подсказки, вызываемой программно с помощью метода Show (). Это прекрасно работает, но нет события onclick или простого способа закрыть всплывающую подсказку. Вы должны вызвать метод Hide () где-то еще в вашем коде, и я бы предпочел, чтобы подсказка могла закрываться сама. Я знаю, что в сети есть несколько всплывающих подсказок, которые используют управляющий и неуправляемый код для выполнения этого с Windows API, но я бы предпочел остаться в своем удобном мире .NET. У меня есть стороннее приложение, которое вызывает мое приложение .NET, и происходит сбой при попытке отобразить неуправляемые подсказки.

Ответы [ 3 ]

4 голосов
/ 29 октября 2008

Вы можете попробовать реализовать свое собственное окно с подсказками, переопределив существующее и настроив функцию 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     }
3 голосов
/ 10 декабря 2012

Вы можете создать подкласс класса ToolTip с помощью своего собственного CreateParams, который устанавливает стиль TTS_CLOSE:

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 , используя манифест приложения .

Добавьте новый «Файл манифеста приложения» и добавьте следующее под элементом :

<dependency>
  <dependentAssembly>
    <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        processorArchitecture="*"
        publicKeyToken="6595b64144ccf1df"
        language="*"
      />
  </dependentAssembly>
</dependency> 

В Visual Studio 2012, по крайней мере, этот материал включен в шаблон по умолчанию, но закомментирован - вы можете просто раскомментировать его.

Tooltip with close button

2 голосов
/ 11 февраля 2011

Вы можете попытаться переопределить метод CreateParams в вашей реализации класса ToolTip ... т.е.

    protected override CreateParams CreateParams
    {
        get
        {
           CreateParams cp = base.CreateParams;
           cp.Style = 0x80 | 0x40; //TTS_BALLOON & TTS_CLOSE

           return cp;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...