.Net utilizzo del controllo notifyIcon tramite VB.Net e C#

Articolo che fornisce le tecniche di utilizzo del controllo di notifica.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

In questo articolo vedremo come utilizzare nelle nostre applicazioni di tipo “Windows Application” il controllo NotifyIcon, che permette di visualizzare un’icona nella traybar, quell’area posta vicino all’orologio nel quale sono visibili le icone più utilizzate o informative come il livello della batteria, la connessione ad una rete, e così continuando.
Per le immagini possiamo andare al seguente sito https://icons8.com/icons oppure utilizzare quelle che abbiamo o da altri siti.
Il controllo può tornate utile nei contesti in cui vogliamo nasconderlo nel momento in cui si riduce ad icona.
Una prassi per lasciare libero lo schermo ma al tempo stesso aperto il programma.
L’articolo riguarderà i due linguaggi di programmazione più utilizzati in ambito .Net


Creazione del progetto


Si crea un progetto di tipo “Windows Application” che presumiamo che il lettore già conoscerà, con il linguaggio di proprio interesse.
Una volta creato il progetto, trasciniamo sul form il controllo Notifylcon che troviamo nella barra degli strumenti, tra i controlli più comuni, il tutto come mostrato in figura 1 e 2.
 

Figura 1 e 2 – il controllo notifyicon trascinata sulla form

A questo punto nella barra delle proprietà abbiamo la possibilità di impostare alcuni valori che ci semplificano di molto lo scenario di una notifica nella trayBar.
Vediamo in particolar modo alcune delle proprietà più comune, ma molte impostazioni andranno settare alcune informazioni utili.
Vediamo alcune proprietà da valorizzare.
Come riportato in figura 2, la proprietà BalloonTipIcon, permette di impostare il tipo di icona che il controllo offre, informativa, errore o altro.
Mentre la proprietà BalloonTipText permette d impostare la descrizione, nel senso il testo che verrà visualizzato all’utente, quindi un messaggio informativo o il motivo dell’errore.
La proprietà BalloonTipTitle riguarda invece il titolo, quindi un testo che verrà posta nella parte superiore della notifica, possiamo valorizzarlo con il nome del programma.
Nella finestra delle proprietà, ancora non abbiamo impostato il menu, relativo alla proprietà “ContextMenuStrip” che viene aperto quando si fa click con il pulsante destro sull’icona posta nella trayBar, ma che vedremo a breve.
La proprietà Icon, permette di impostare una icona nostra, da visualizzare nella barra.
Infine la proprietà “Text” permette di impostare il testo con il quale visualizzare all’utente un messaggio quando il mouse si trova in vicino all’icona nella trayBar.

Figura 3 – la finestra delle proprietà con il testo impostato.


Dopo aver fornito questa panoramica delle proprietà del controllo, passiamo al relativo funzionamento.
Se viene avviato il programma, così com’è non funziona, dovremmo scrivere nell’evento della form, il metodo per visualizzare la notifica.
In particolare utilizzare il metodo “ShowBalloonTip” passando come parametro un numero intero, con il quale viene indicato per quanti millisecondi viene visualizzato la notifica.

VB.Net
notifyIcon1.ShowBalloonTip(4000)
C#
notifyIcon1.ShowBalloonTip(4000);

Ora vediamo come utilizzarlo nel modo migliore, aggiungiamo un controllo di tipo menu contestuale è precisamente denominato “ContextMenuStrip”, lo valorizziamo con due voci di menu “Messaggio” e “Esci” (figura 4) dove per esci, si chiude la form, mentre per la voce “Messaggio” visualizza una messaggebox.

Figura 4 – Il menu contestuale

Qui di seguito il codice delle due voci di menu.

VB.Net
Private Sub messaggioToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles messaggioToolStripMenuItem.Click
MessageBox.Show("Testo")
End Sub
Private Sub esciToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles esciToolStripMenuItem.Click
Me.Close()
End Sub
C#
private void messaggioToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Testo");
}
private void esciToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}

Ora dobbiamo settare la proprietà “ContextMenuStrip” del controllo notifyicon con il menu appena aggiunto, il tutto come mostrato in figura 5.

Figura 5 – Il menu contestuale impostato nella proprietà del controllo notifica.


Ora vediamo come utilizzarlo nelle situazioni standard, in particolare visualizzare la notifica nel momento in cui si riduce ad icona la nostra for, in questo caso, la form verrà nascosto mentre verrà visualizzata l’icona.
Se facciamo doppio click sull’icona verrà aperta, altrimenti no.
Prima di tutto dobbiamo scrivere il codice che al doppio click sull’icona visualizza la form oppure nasconde la form.
Dalla finestra delle proprietà del controllo di notifica, facciamo doppio click sull’evento “MouseDoubleClick” come mostrato in figura 6.

Figura 6 – La generazione dell’evento di doppio click.


In questo modo passiamo alla visualizzazione codice che ci permette di gestire il doppio click sull’icona e fare in modo che venga aperta la nostra applicazione.
Nell’evento dobbiamo scrivere il codice che visualizza la form e ripristina lo stato della finestra in modalità normale.
Qui di seguito le dichiarazioni per entrambi i linguaggi.

VB.Net
Private Sub notifyIcon1_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles notifyIcon1.MouseDoubleClick
Me.Show()
Me.WindowState = FormWindowState.Normal
End Sub
C#
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.Show();
this.WindowState = FormWindowState.Normal;
}

Nell’evento “Resize” della nostra form, dobbiamo gestire la possibilità di nascondere il nostro applicativo, nel caso che viene minimizzato, in questo modo non sarà visibile e con l’area desktop pulita. Abbiamo anche inserito il frammento di codice per visualizzare la notifica
Qui di seguito il frammento di codice per tali operazioni.

VB.Net
Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles MyBase.Resize
If Me.WindowState = FormWindowState.Minimized Then
notifyIcon1.ShowBalloonTip(4000)
Me.Hide()
End If
End Sub
C#
private void Form1_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
notifyIcon1.ShowBalloonTip(4000);
Hide();
}
}


Ora non ci cresta che testare il nostro applicativo, avviando il programma, noteremo che riducendo ad icona verrà visualizzato il messaggio ed il programma verrà nascosto.
Oltre all’icona sarà disponibile un messaggio, il tutto come mostrato in figura 7 ed avremo un menu al testo destro del mouse.

Figura 7 – la notifica che viene eseguita quando si riduce ad icona il programma

Conclusioni


L’articolo ha voluto fornire informazioni utili sul controllo notifica, ma soprattutto come fornire ai nostri progetti di tipo “Windows Application” una funzionalità particolare, scrivendo poche righe di codice.
Un controllo che risulta interessante anche in ambito di quei programma che devono essere eseguiti in modalità nascosta.