NET 4.5 C # to create a window shape. I want to dynamically create and add buttons, and assign click events to them, but I want them to be dynamically placed in a certain way, like an image.

My question is how to place buttons dynamically in the way described above, i.e. 4x4 format (4 buttons per row, 4 columns, but unlimited rows). Can this be done in the form of a win?
I am currently trying to use the code below, but have no clear idea of how I can put the buttons as shown above.
public Form1()
{
InitializeComponent();
for (int i = 0; i < 5; i++)
{
Button button = new Button();
button.Location = new Point(160, 30 * i + 10);
button.Click += new EventHandler(ButtonClickCommonEvent);
button.Tag = i;
this.Controls.Add(button);
}
}
void ButtonClickCommonEvent(object sender, EventArgs e)
{
Button button = sender as Button;
if (button != null)
{
switch ((int)button.Tag)
{
case 0:
break;
case 1:
break;
}
}
}
Please advise the solution with the codes.