Ciao
In realtà usando il codice che avete postato, i controlli vengono inseriti tutti quanti nella stessa posizione, perchè a quella di default (0, 0) aggiungete un valore fisso (0, 0 + 20)
Quello che bisogna fare invece è o avere la posizione del controllo precedente, oppure usare una variabile che faccia da indice per il controllo, per cui moltiplicare la posizione verticale:
int i = 0;
foreach(ecc)
{
//ecc
_rb.Location = new Point(0, 20 * i);
//ecc
i++;
}
In alternativa puoi usare il controllo FlowLayoutPanel e inserire i tuoi RadioButton all'interno di questo, che provvede automaticamente ad ordinarli (imposta la proprietà FlowDirection a TopDown):
//Rimuove gli oggetti presenti
tuoFlowPanel.Controls.Clear();
foreach(ecc)
{
//ecc
tuoFlowPanel.Controls.Add(_rb);
//ecc
}
Luca