「継承されたフォーム」を使ってもいいのではないでしょうか。
(他の回答では否定的なようですが、私が何か前提を読み間違えているのかな?)
手順
- ベースとなるフォーム(サイズが700x660、上部にラベルx1、下部にボタンx8)を作成する(仮に
BaseForm
クラスとします)
BaseForm
クラスに必要なプロパティやメソッドを追加する
- いったんビルドする
- フォームを追加する際に「新しい項目の追加」ダイアログで「Windows フォーム」ではなく「継承されたフォーム」を選択する
- 「継承ピッカー」ダイアログで
BaseForm
を選択して「OK」を押す
- 追加したフォームをデザイナーで編集したりプロパティやメソッドを実装したりする
手順2. について
BaseForm
を継承したフォームで使われそうなプロパティ(上部ラベルに表示するテキスト、下部ボタン達に表示するテキスト、あたり?)は BaseForm
のプロパティにしておきます。
また、下部ボタンを押したときのイベントハンドラーをオーバーライド可能にしておきます。
vb
1' ラベル LabelTitle と ボタン Button1~Button8 がある想定
2' このクラス自体は「プロジェクト > 新しい項目の追加 > Windows Forms > Windows フォーム」として追加する
3Public Class BaseForm
4
5 ''' <summary>フォーム上部のラベルに表示する文字列</summary>
6 Public Property FormTitle As String
7 Get
8 Return LabelTitle.Text
9 End Get
10 Set(value As String)
11 LabelTitle.Text = value
12 End Set
13 End Property
14
15 ''' <summary>下部ボタン1個目に表示する文字列</summary>
16 Public Property Button1Text As String
17 Get
18 Return Button1.Text
19 End Get
20 Set(value As String)
21 Button1.Text = value
22 End Set
23 End Property
24 ' 以下、Button8Textまで同様に追加する
25
26 ''' <summary>下部ボタン1個目を押したときの処理</summary>
27 Protected Overridable Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
28 ' Button1押下時の共通処理があれば、ここに追加する
29 End Sub
30 ' 以下、Button8_Clickまで同様に追加する(要Overridable)
31
32End Class
手順6. について
手順2. で実装したプロパティを、デザイナーあるいはコードから適宜変更します。
また、下部ボタンを押したときのイベントハンドラーをオーバーライドします。
vb
1' FormTitle や Button1Text などはデザイナーから変更する想定
2Public Class NewForm1
3
4 Protected Overrides Sub Button1_Click(sender As Object, e As EventArgs)
5 MyBase.Button1_Click(sender, e)
6
7 ' 個別の処理をここに追加する
8 End Sub
9
10End Class
うまく設計すれば、Formを継承して共通ラベルやボタンを1個ずつ配置するよりも楽になるかと思います。
複数人で開発する場合は特に。