Sure. You have some data, it can change. Populate it. Do something like this:
Button button = new Button();
button.Location =
button.Text =
parent.Controls.Add(button);
button.Click += (sender, eventArgs) => { }
All this you can do dynamically, when UI is already shown or not.
This is just the idea, because you did not tag what UI library you want to use. It would look pretty much like that anyway.
—SA