| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  22-02-2007, 12:36 | #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à   | 
|   |   | 
|  22-02-2007, 12:42 | #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   | 
|   |   | 
|  22-02-2007, 13:12 | #3 | |
| Bannato Iscritto dal: Mar 2006 Città: Venaria (TORINO) 
					Messaggi: 735
				 | Quote: 
  Per non mostrare la "X" però come faccio? | |
|   |   | 
|  22-02-2007, 13:29 | #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   | 
|   |   | 
|  22-02-2007, 15:21 | #5 | |
| Member Iscritto dal: Jul 2006 
					Messaggi: 146
				 | Quote: 
 Ciao 
				__________________ Forza e onore!!! | |
|   |   | 
|  22-02-2007, 15:27 | #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   | |
|   |   | 
|  23-02-2007, 12:20 | #7 | 
| Bannato Iscritto dal: Mar 2006 Città: Venaria (TORINO) 
					Messaggi: 735
				 | 
		Grazie a tutti per le risposte, vi farò sapere!    | 
|   |   | 
|  26-02-2007, 16:46 | #8 | 
| Bannato Iscritto dal: Mar 2006 Città: Venaria (TORINO) 
					Messaggi: 735
				 | 
		Altrimenti il tasto "X" che nome ha? Come posso disattivarlo? Grazie   | 
|   |   | 
|  27-02-2007, 13:45 | #9 | 
| Bannato Iscritto dal: Mar 2006 Città: Venaria (TORINO) 
					Messaggi: 735
				 | 
		up
		 | 
|   |   | 
|  28-02-2007, 16:45 | #10 | 
| Bannato Iscritto dal: Mar 2006 Città: Venaria (TORINO) 
					Messaggi: 735
				 | 
		Help! Come si chiama la "x" in alto a destra?    | 
|   |   | 
|  28-02-2007, 18:11 | #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: 01:09.









 
		 
		 
		 
		








 
  
 



 
                        
                        










