You definitely can't do it like that: you are creating a single instance of an ElipseControl and re-using it inside the loop. That means that each time round, you overwrite the settings you applied the previous time - and that means that the result will only be set for the last Button in your collection.
If you want to apply this to all buttons, you probably need to create a new instance of ElipseControl for each Button - and that means moving the code inside the loop. I'd also use more modern code for the loop body:
foreach (Control c in Controls)
{
if (c is Button btn)
{
ElipseControl el = new ElipseControl();
el.TargetControl = btn;
el.CornerRadius = 20;
}
}