Por que apenas o primeiro RadioButton está sendo adicionado ao GroupBox?

Estou tentando criar dinamicamente controles do Windows e adicioná-los a um painel. Para Button e Checkbox, isso funcionou bem; No entanto, eu tive um problema com um GroupBox, com RadioButtons dentro dele.

O primeiro elemento RadioButton é criado e adicionado ao GroupBox no local esperado, mas os existentes, apesar de ostensivamente criados (percorrer o código que parece ser esse o caso), eles não são visíveis.

Eu pensaria que se os RadioButtons subseqüentes estivessem sendo colocados sobre os anteriores, o último seria o visto. Isto é o que parece:

Cada valor delimitado por ~ deve ser o valor de texto de um radioButton, mas apenas um é exibido. Preciso fornecer explicitamente os valores de Localização para os RadioButtons subsequentes, ou por que isso está falhando?

Aqui está o código:

private GroupBox getGroupBox(string currentSettings, int curLeftVal)
{
    // "apple~orange~peach~True (must look for "enclose group in a black box" as the last val (ignore for the quick-and-dirty mockup, though))
    List<string> grpbxVals = new List<string>(currentSettings.Split('~'));
    GroupBox gb = new GroupBox();
    gb.Height = 60;
    gb.Location = new Point(curLeftVal, PANEL_TOP_LOC);
    RadioButton radbtn = null;
    // "-1" because we're ignoring the final bool ("enclose in black box")
    for (int i = 0; i < grpbxVals.Count-1; i++)
    {
        radbtn = new RadioButton();
        radbtn.Text = grpbxVals[i];
        gb.Controls.Add(radbtn);
    }
    return gb;
}
ATUALIZAR

A idéia na resposta abaixo por Pierre parece sensata, mas ainda não é exatamente o que o médico ordenou:

ATUALIZAÇÃO 2

Isso funciona muito bem (modificação do código de Pierre):

IList<string> grpbxVals = new List<string>(currentSettings.Split('~'));
GroupBox gb = new GroupBox { Height = 60, Location = new Point(curLeftVal, 0) };

int radButtonPosition = 0; 
for (int i = 0; i < grpbxVals.Count() - 1; i++)
{
    gb.Controls.Add(new RadioButton { Text = grpbxVals[i], Location = new Point(curLeftVal, radButtonPosition) });
    radButtonPosition += new RadioButton().Height - 4; // the "-4" is a kludge
}
return gb;

Dá-me:

questionAnswers(2)

yourAnswerToTheQuestion