Il ruolo del controllore è semplicemente quello di chiamare le funzionalità che l'utente richiede al momento in cui vengono richieste... È ciò che fa "dialogare" l'interfaccia grafica con il modello sottostante, per maggiori dettagli guarda qui.
Dipende anche da come si realizzano le interfacce grafiche in C#, però in linea di massima servono dei moduli e un qualcosa che permetta di ricevere l'input dall'utente e presentare i dati richiesti.
Solitamente il "main" si occupa della creazione iniziale dell'applicazione, in seguito l'interfaccia si mette in ascolto degli input dati dall'utente, e chiama le funzioni del controllore per la modifica/gestione dei dati. Il controllore si occupa quindi di chiamare i moduli che gestiscono le funzionalità richieste dall'utente.