|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Mar 2006
Città: Venaria (TORINO)
Messaggi: 735
|
[Visual C# - help Windows Forms]
Ciao a tutti, ho il seguente problema : il mio programmino apre una windows form in cui vengono inseriti dei parametri da parte dell'utente, poi si può decidere se resettare tali parametri oppure dare l'ok, e ciò avvierà l'elaborazione. Fin qui tutto bene. Il problema è questo : se chiudo la finestra con il pulsante "X" in alto a destra, l'elaborazione parte lo stesso, ovviamente i parametri passati al programmino sono quelli che ho impostato di default. Io vorrei invece che, quando decido di chiudere la form cliccando sulla "X" in alto a destra, la finestra si chiuda e l'elaborazione si fermi. Come posso fare? Tenete presente che è la prima volta che uso un tale ambiente e le windows forms
![]() Grazie a chi mi risponderà ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Puoi decidere più semplicemente di non mostrare il pulsante "X" ma di creare un tuo pulsante di uscita, dove come codice potresti mettere:
Codice:
Application.Exit() //oppure this.Close(); this.Dispose(); //se hai implementato un'interfaccia IDisposable.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#3 | |
Bannato
Iscritto dal: Mar 2006
Città: Venaria (TORINO)
Messaggi: 735
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Nel designer ti basta settare la proprietà:
FormBorderStyle su "none".
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#5 | |
Member
Iscritto dal: Jul 2006
Messaggi: 146
|
Quote:
Ciao
__________________
Forza e onore!!! |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() Allora basta che selezioni dal designer le action possibili dal form, e poi fai doppio click su FormClosed e ci scrivi quella funzione.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
#7 |
Bannato
Iscritto dal: Mar 2006
Città: Venaria (TORINO)
Messaggi: 735
|
Grazie a tutti per le risposte, vi farò sapere!
![]() |
![]() |
![]() |
![]() |
#8 |
Bannato
Iscritto dal: Mar 2006
Città: Venaria (TORINO)
Messaggi: 735
|
Altrimenti il tasto "X" che nome ha? Come posso disattivarlo? Grazie
![]() |
![]() |
![]() |
![]() |
#9 |
Bannato
Iscritto dal: Mar 2006
Città: Venaria (TORINO)
Messaggi: 735
|
up
|
![]() |
![]() |
![]() |
#10 |
Bannato
Iscritto dal: Mar 2006
Città: Venaria (TORINO)
Messaggi: 735
|
Help! Come si chiama la "x" in alto a destra?
![]() |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
In realtà non è così immediato quello che vuoi fare, dato che dovresti fare un override dell'evento associato alla chiusura del form.
In rete ho trovato questi esempi, uno che non utilizza le API ed uno che invece le utilizza: Codice:
//questo esempio non fa utilizzo delle API di windows: protected override void WndProc(ref System.Windows.Forms.Message m) { if(m.Msg != 0x0010) { base.WndProc(ref m); } else { //Windows has send the WM_CLOSE message to your form. //Ignore this message will make the window stay open. } } Codice:
//questo esempio utilizza le API using System.Runtime.InteropServices; private const int MF_BYPOSITION = 0x400; private const int MF_REMOVE = 0x1000; private const int MF_DISABLED = 0x2; [DllImport("user32.Dll")] public static extern IntPtr RemoveMenu(int hMenu, int nPosition,long wFlags); [DllImport("User32.Dll")] public static extern IntPtr GetSystemMenu(int hWnd, bool bRevert); [DllImport("User32.Dll")] public static extern IntPtr GetMenuItemCount(int hMenu); [DllImport("User32.Dll")] public static extern IntPtr DrawMenuBar(int hwnd); public void DisableCloseButton(int hWnd) { IntPtr hMenu; IntPtr menuItemCount; //Obtain the handle to the form's system menu hMenu = GetSystemMenu(hWnd, false); // Get the count of the items in the system menu menuItemCount = GetMenuItemCount(hMenu.ToInt32()); // Remove the close menuitem RemoveMenu(hMenu.ToInt32(), menuItemCount.ToInt32() - 1,MF_DISABLED | MF_BYPOSITION); // Remove the Separator RemoveMenu(hMenu.ToInt32(), menuItemCount.ToInt32() - 2,MF_DISABLED | MF_BYPOSITION); // redraw the menu bar DrawMenuBar(hWnd); } //chiamare poi il metodo nell'evento Form_Load DisableCloseButton(this.Handle.ToInt32()); ![]()
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:47.