Elimnare/disabilitare pulsanti su barra menù form

martedì 12 febbraio 2008 - 13.59

Maurizio_Roma Profilo | Newbie

Ho appena risolto il problema di fermare un processo da codice, che ecco che ne ho un altro nuovo.
Come posso eliminare o disabilitare i 3 tasti sulla barra del menù di un form, senza eliminare la barra?

So già che sarà facile (per voi) ma io non ci riesco.

Grazie dell'aiuto

aiedail92 Profilo | Expert

Ciao

Per toglierli tutti e tre basta impostare la proprietà ControlBox della form su False. Attento però che ciò non impedisce all'applicazione di essere chiusa (x es con Alt+F4)

Luca

Maurizio_Roma Profilo | Newbie

Perfetto funziona perfettamente, ma se io volessi disabilitare anche la chiusura con ALT+F4 come potrei fare?????

Grazie

aiedail92 Profilo | Expert

Potresti intercettare l'evento FormClosing e lì impostare la proprietà Cancel del parametro e su True, in modo che venga annullata la chiusura del Form.

Così però l'applicazione è proprio "inchiudibile"; per risolvere potresti fare un check sulla proprietà CloseReason di e. Per indicare che l'applicazione sta venendo chiusa dall'utente il valore di CloseReason è UserClosing. Quindi per annullare la chiusura solo in questo caso te la cavi con un semplice if:

private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { //Annullo la chiusura solo se chiamata dall'utente if (e.CloseReason == CloseReason.UserClosing) { e.Cancel = false; } }

Come ti avevo detto prima, però, l'applicazione può sempre essere chiusa col metodo kill da un'applicazione esterna, perchè la chiusura viene imposta immediatamente, senza elaborare i messaggi.

Luca

Maurizio_Roma Profilo | Newbie

Grazie tanto, ma sto utilizzando il vb.net, non è che sapresti consigliarmi lo script anche per visual basic?

Grazie

aiedail92 Profilo | Expert

Ciao

Eccolo qui :

Private Sub MainForm_FormClosing(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.FormClosingEventArgs) _ Handles MyBase.FormClosing If e.CloseReason = CloseReason.UserClosing Then e.Cancel = True End If End Sub

Luca

Maurizio_Roma Profilo | Newbie

Grazie dell'aiuto.

aiedail92 Profilo | Expert

Prego, è un piacere!

Luca
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5