I controlli non sono altro che membri della classe, quindi sono ovviamente accessibili all'esterno di essa, non necessariamente usando Controls, ma sfruttando direttamente il nome stesso, purché la loro visibilità sia sufficiente.

Per ciascun controllo esiste la proprietà Modifiers che permette proprio di modificare questa dichiarazione. Impostata a Public, consente di accedere al membro del controllo anche da un'altra classe, senza usare la proprietà Controls che, sicuramente, risulta più lenta rispetto all'accesso diretto (poiché implica una ricerca in una lista o, se va bene, in una Hashtable).

In quanto al costrutto With, io lo eviterei come la peste ogni volta che è possibile.

Ciao!