.NET (C# and VB.NET) doesn't really make a distinction between design-time created controls and controls created at run-time. But, it's not immediately obvious how to create ActiveX controls at run-time.
A simple trick may help. Visual Studio automatically generates all the needed code when you drop a control on a form. But, it hides it in hidden files. For example, while you are editing Form1.cs or Form1.vb, the "design-time" code is placed into Form1.Designer.cs or Form1.Designer.vb. These are great places to learn how to create controls dynamically.
We have created a sample for both VB and C#, which you can recreate by creating a new project with an empty form. Then add an ActiveX control (in this example we used SftBox/OCX) and a button control (named button1). Add the following code:
VB
CS
The key in both samples is to set the OcxState property of the dynamic control with the property settings of the "designed" control. This has the convenient benefit, that you can set all relevant properties using the property pages. These are then copied for all dynamic controls.
You will have to "design" at least one control. If you don't want to actually use the designed control, simply disable and hide it using the Enabled and Visible properties. Or, you could have multiple designed controls that you can use as templates. Then, when you create a dynamic control, select the property set (for the OcxState property) which closest matches your desired settings.