Ciao
L'errore nella prima parte di codice è in MinimizeBox = false: in questo modo disattivi il bottone per minimizzare la finestra, ma non la nascondi. L'evento da intercettare è FormClosing. Prova a scrivere così:
private void tuaForm_FormClosing(object sender,
FormClosingEventArgs e)
{
DialogResult result =
MessageBox.Show("Sì -> Riduce nella traybar" +
"\r\nNo -> Chiude l'applicazione",
"", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
e.Cancel = true;
this.Visible = false;
tuaNotifyIcon.Visible = true;
}
}
Nel secondo listato l'errore è WindowState = FormWindowState.Maximized: con questo codice rendi la Form a schermo intero, cioè massimizzata, ma siccome è ancora nascosta, non la vedi. Quindi correggi così:
private void tuaNotifyIcon_DoubleClick(object sender, EventArgs e)
{
tuaNotifyIcon.Visible = false;
this.Visible = true;
}
Invece nel terzo blocco dovresti fare un controllo per verificare se il Form è stato effettivamente ridotto a icona (potrebbe aver subito un normale ridimensionamento) prima di nasconderlo; inoltre dovresti poter rimuovere l'istruzione this.ShowInTaskbar = false, perchè l'icona nella taskbar dovrebbe sparire in automatico quando nascondi il Form. Qui la correzzione:
private void tuaForm_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
tuaNotifyIcon.Visible = true;
this.Hide();
}
}
Luca