2010-03-11 21 views
12

Ho lavorato con NotifyIcon per mostrare un'icona nella barra delle applicazioni. Questo programma non ha Windows Form. Forse potrei crearne uno e renderlo invisibile ma speravo di evitarlo. Le funzioni ToolTip associate a NotifyIcon sono in qualche modo carenti, e uno dei guru ha suggerito di dare un'occhiata alla funzionalità ToolTip. È possibile associare ToolTip a un modulo. È possibile collegarlo solo a NotifyIcon? Sto cercando fare questo:Combina NotifyIcon e ToolTip

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

E io ottenere l'errore "non può convertire da 'System.Windows.Forms.NotifyIcon' a 'System.Windows.Forms.Control' C'è un modo per convertire.? ho anche provato:

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

ma un contenitore non è apparentemente un controllo valida sia mi scuso per la mia totale mancanza di comprensione di come questo può o non può funzionare

Grazie in anticipo

...
+1

NotifyIcons e vassoio di sistema sembrano essere lì via d'uscita in Windows 7, strumento bar anteprima con pulsanti e menu sono in là modo invece. Si potrebbe voler prendere in considerazione questo per il nuovo software. –

risposta

1

NotifyIcon viene utilizzato per l'icona della barra delle applicazioni che viene visualizzata nell'angolo in basso a destra dello schermo, l'utilizzo di ToolTip è solo per controlli come caselle di testo, caselle di controllo e così via ... ad esempio, supponiamo che ci sia un'istanza TextBox chiamato 'textBox1', sulla forma che questo dovrebbe funzionare:

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

Ora, quando si-over del mouse la casella di testo, viene visualizzato un tooltip ...

1

non sono sicuro che è possibile impostare un tooltip direttamente su un'icona di notifica. È la stessa cosa dell'impostazione della proprietà text sull'icona di notifica stessa. Esistono alcune limitazioni al testo dell'icona di notifica. È limitato a 128 caratteri e resterà attivo solo per un breve periodo di tempo. Se si desidera visualizzare più informazioni per un periodo di tempo più lungo, è necessario esaminare la proprietà del testo del fumetto dell'icona di notifica. Consiglio vivamente di leggere la pagina MSDN è abbastanza utile.

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

+0

* Nota: in base alla documentazione per il testo sotto il collegamento fornito in precedenza, il limite per il testo è di 63 caratteri (vedere la sezione Eccezioni): http://msdn.microsoft.com/en-us/library/system.windows .forms.notifyicon.text.aspx –

3

vassoio icone non supportano i suggerimenti quadrati, solo palloncini. Un po 'ha senso, le icone sono di solito abbastanza vicine tra loro, quindi sarebbe difficile vedere quale icona abbia prodotto la punta senza il "gambo" sul palloncino. Utilizzare la proprietà NotifyIcon.BalloonTipText.

1

Non si dovrebbe.

NotifyIcon viene utilizzato per mostrare le notifiche, mentre ToolTip viene utilizzato per mostrare le informazioni sull'attività corrente dell'utente, deve essere utilizzato "in posizione".

controllare le linee guida dell'interfaccia utente:

  1. Notifications
  2. Balloons
+1

Questa è la teoria. La pratica degli ultimi dieci anni è che le icone di notifica non vengono effettivamente utilizzate per le notifiche, ma piuttosto per le interfacce utente a basso profilo. –

26

una risposta tardiva, ma forse utile per gli altri.

1

Tutte le icone del vassoio sul computer dispongono di descrizioni comandi. È necessario creare il NotifyIcon utilizzando il costruttore che accetta un componente come argomento. Visualizza la proprietà NotifyIcon.Text.

sono stato in grado di creare uno utilizzando il codice di esempio qui: 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(); 
    } 
} 
+0

In genere si desidera inserire il codice pertinente dal collegamento nella risposta invece di includere solo il collegamento. –