Подтвердить что ты не робот

Объединить NotifyIcon и ToolTip

Я работаю с NotifyIcon, чтобы показать значок на панели задач. Эта программа не имеет формы Windows. Возможно, я смогу создать его и сделать его невидимым, но я надеялся избежать этого. Некоторые функции ToolTip, подключенные к NotifyIcon, несколько отсутствуют, и один из гуру предложил мне взглянуть на функциональность ToolTip. Можно прикрепить ToolTip к форме. Можно ли подключить его только к NotifyIcon? Я пытаюсь сделать это:

NotifyIcon CTicon = new NotifyIcon();
ToolTip toolTip = new ToolTip();
toolTip.SetToolTip(CTicon, "Test");

И я получаю сообщение об ошибке "не могу конвертировать из" System.Windows.Forms.NotifyIcon "в" System.Windows.Forms.Control ". Есть ли способ конвертировать? Я также пробовал:

toolTip.SetToolTip(CTicon.Container, "Test");

но контейнер, по-видимому, тоже не является допустимым. Прошу прощения за то, что я полностью не понимаю, как это может или не может работать.

Спасибо заранее.

4b9b3361

Ответ 1

Запоздалый ответ, но, возможно, полезный для других.

NotifyIcon.Text = "ToolTipText";

Ответ 2

Значки лотка не поддерживают квадратные подсказки, только воздушные шары. Kinda имеет смысл, иконы, как правило, довольно близко друг к другу, поэтому было бы трудно понять, какой значок произвел наконечник без "стебля" на баллоне. Используйте свойство NotifyIcon.BalloonTipText.

Ответ 3

NotifyIcon используется для значка в системном трее, который вы видите в правом нижнем углу экрана, использование ToolTip предназначено только для таких элементов управления, как текстовые поля, флажки и т.д.... например, допустим наличие текстового блока экземпляр, называемый "textBox1", в форме, чем это могло бы работать:

toolTip1.SetToolTip(textBox1, "Hello World");

Теперь, когда вы наводите указатель мыши на текстовое поле, отображается всплывающая подсказка...

Ответ 4

Я не уверен, что вы можете установить всплывающую подсказку непосредственно на значке уведомления. Это то же самое, что и установка свойства text на самой иконке уведомления. Есть некоторые ограничения на значок значка уведомлений. Он ограничивается 128 символами и будет оставаться на короткое время. Если вы хотите отобразить больше информации в течение более длительного времени, вы должны посмотреть на свойство текста шара значка уведомления. Я настоятельно рекомендую прочитать страницу MSDN, это очень полезно.

http://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon.aspx

Ответ 5

Вы не должны.

NotifyIcon используется для отображения уведомлений, тогда как ToolTip используется для отображения информации о текущей активности пользователя, его следует использовать "на месте".

Проверьте правила пользовательского интерфейса:

Ответ 6

Все значки в трее на моем компьютере имеют всплывающие подсказки. Вам необходимо создать свой NotifyIcon, используя конструктор, который принимает компонент в качестве аргумента. Он отображает свойство NotifyIcon.Text.

Мне удалось создать его с помощью кода примера здесь: http://msdn.microsoft.com/en-us/library/1by05f8d.aspx

using System;
using System.Drawing;
using System.Windows.Forms;

public class Form1 : System.Windows.Forms.Form
{
    private System.Windows.Forms.NotifyIcon notifyIcon1;
    private System.Windows.Forms.ContextMenu contextMenu1;
    private System.Windows.Forms.MenuItem menuItem1;
    private System.ComponentModel.IContainer components;

    [STAThread]
    static void Main() 
    {
        Application.Run(new Form1());
    }

    public Form1()
    {
        this.components = new System.ComponentModel.Container();
        this.contextMenu1 = new System.Windows.Forms.ContextMenu();
        this.menuItem1 = new System.Windows.Forms.MenuItem();

        // Initialize contextMenu1 
        this.contextMenu1.MenuItems.AddRange(
                    new System.Windows.Forms.MenuItem[] {this.menuItem1});

        // Initialize menuItem1 
        this.menuItem1.Index = 0;
        this.menuItem1.Text = "E&xit";
        this.menuItem1.Click += new System.EventHandler(this.menuItem1_Click);

        // Set up how the form should be displayed. 
        this.ClientSize = new System.Drawing.Size(292, 266);
        this.Text = "Notify Icon Example";

        // Create the NotifyIcon. 
        this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);

        // The Icon property sets the icon that will appear 
        // in the systray for this application.
        notifyIcon1.Icon = new Icon("appicon.ico");

        // The ContextMenu property sets the menu that will 
        // appear when the systray icon is right clicked.
        notifyIcon1.ContextMenu = this.contextMenu1;

        // The Text property sets the text that will be displayed, 
        // in a tooltip, when the mouse hovers over the systray icon.
        notifyIcon1.Text = "Form1 (NotifyIcon example)";
        notifyIcon1.Visible = true;

        // Handle the DoubleClick event to activate the form.
        notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick);

    }

    protected override void Dispose( bool disposing )
    {
        // Clean up any components being used. 
        if( disposing )
            if (components != null)
                components.Dispose();            

        base.Dispose( disposing );
    }

    private void notifyIcon1_DoubleClick(object Sender, EventArgs e) 
    {
        // Show the form when the user double clicks on the notify icon. 

        // Set the WindowState to normal if the form is minimized. 
        if (this.WindowState == FormWindowState.Minimized)
            this.WindowState = FormWindowState.Normal;

        // Activate the form. 
        this.Activate();
    }

    private void menuItem1_Click(object Sender, EventArgs e) {
        // Close the form, which closes the application. 
        this.Close();
    }
}