実はシェイプコントロールはツールボックスからドラッグ&ドロップしたとき、フォームに直接追加されるわけではないことを知りました。
ドラッグ&ドロップを行うと、自動でShapeContainerが追加され、その上に貼り付けられます。
ということでこのお約束を守れば動的追加を行うことができます。
お約束は
1. シェイプコントロールを表示するにはSahpeContainerが必要
2. シェイプコントロールの親はShapeContainer
3. SapeContainerの親はForm
VB.NETでのサンプルは下記の通りです
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'1 シェイプコントロールを表示するにはSahpeContainerが必要
Dim canvas As New Microsoft.VisualBasic.PowerPacks.ShapeContainer
Dim rec As New Microsoft.VisualBasic.PowerPacks.RectangleShape
rec.FillColor = System.Drawing.SystemColors.ControlDark
rec.FillGradientColor = System.Drawing.Color.Maroon
rec.FillGradientStyle = Microsoft.VisualBasic.PowerPacks.FillGradientStyle.None
rec.FillStyle = PowerPacks.FillStyle.Wave
rec.Location = New System.Drawing.Point(10, 10)
rec.Name = "RectangleShape1"
rec.Size = New System.Drawing.Size(100, 100)
'2. シェイプコントロールの親はShapeContainer
rec.Parent = canvas
'3. SapeContainerの親はForm
canvas.Parent = Me
End Sub
実行結果は下記の通り
