2013-04-07 13 views
5

Ciao Ho alcune forme nel mio progetto e voglio fare un metodo che ne abbia chiuso uno. Il metodo è:Chiudere un modulo specifico con un metodo in C#

public static void close_form (Form frm) 
{ 
    frm.Close(); 
} 

e lo uso in questo modo:

public partial class myForm : Form 
{ 
    close_form(myForm); 
} 

ma quando voglio eseguire l'applicazione ottengo l'errore: myForm è un 'tipo', ma viene usato come un 'variabile'

Cosa sto facendo male? C'è un altro modo per close il modulo senza utilizzare this.close()?

+0

Perché stai evitando di chiamare direttamente il metodo 'Chiudi'? –

risposta

8

Si tipo di forma cioè myForm è necessario passare oggetto di tipo di passaggio, è possibile passare this

public partial class myForm : Form 
{ 
    close_form(this); 
} 

Qui myForm è nuovo tipo che eredita da Form tipo e non è un'istanza del modulo corrente . La parola chiave this rappresenta l'istanza corrente della classe che è possibile passare a close_form per ulteriori informazioni su questo here.

Non c'è alcun motivo per la chiusura di modulo chiamando una funzione se la funzione basta avere una sola istruzione per chiudere il modulo a meno che non si sta facendo questo per l'apprendimento o si potrebbe avere qualche ragione per le forme di chiusura attraverso la funzione, come la registrazione di alcune informazioni come la chiusura del modulo nome e ora ecc. Chiama semplicemente this.Close invece di chiamare close_form e passa il modulo corrente ad esso.

+0

Ovviamente, non è del tutto chiaro perché questo sia superiore a 'this.Close()'. –

+0

A quanto pare, non vi è alcun motivo per chiudere la forma in questo modo invece di utilizzare questo. Chiude ma IMO close_form è un metodo statico e potrebbe essere chiamato da altre classi/moduli e potrebbe eseguire alcuni processi comuni come la registrazione. – Adil

Problemi correlati