potresti sostituire
int n = Convert.ToInt16(textBox3.Text);
con
int n=Convert.ToInt32(textBox3.Text);

anche se non è un errore , visto che converte automaticamente , int32 corrisponde a int , int16 corrisponde a short .

ho provato il codice su un progetto windows form , e va bene !

devi assicurarti , che nella casella di testo sia presente sempre , un numero convertibile
in intero , non puoi lasciarla vuota , e non puoi inserire numeri con virgola ;
all'inizio metti "0" zero , nella casella di testo .