-
新しい Visual Basic Windows Application プロジェクトを作成します。単一の Windows Formsが表示されます。
-
Visual Studio のツールボックスから UltraTabControl エレメントを選択して、フォームに追加します。
タブ コントロールに 2 つの別々の部分があることがすぐにわかります。コントロールの上部はタブ ヘッダ領域です。ここにはタブが表示されます。この領域の下にあるのがコントロール領域で、初期状態では「共通コントロール ページ」と表示されています。この領域に格納されるコントロールはタブ間で共有されます。現在、コントロールにはタブがまだ存在しないため、この領域が表示されています。
-
[共通コントロールページ] というキャプションをクリックします。すると、コントロールのハイライト表示が変わります。Visual Studio のプロパティ シート(まだ表示されていなければ [F4] キーを押して開きます)を見ると、現在のコントロールの名前が変更されたことがわかります。Tab エレメントが UltraTabControl1 という名前であれば、現在選択されたコントロールは UltraTabsharedControlsPage1 となります。
これによってタブ ページの概念が導入されます。コントロールをホストするため、作成するタブにはそれぞれ固有のタブ ページが用意されます。タブ ページは、必要に応じて Tab エレメントにより自動的に作成および破棄される、特殊なコンテナ コントロールです。これらのコントロールは WinTab エレメントそのものから独立して存在しているわけではありませんが、あたかも独立しているかのようにアクセスできます。
エレメントには、タブごとにページが用意されるほか、複数のタブに表示可能な共有コントロール用の単一のページも用意されています。現在表示、選択されているのは、このページです。
-
タブ ヘッダ領域をクリックし、Tab エレメントそのものを再度選択します(プロパティ シートを表示している場合は、名前が変更されることがわかります)。次に、Tab エレメントをサイズ変更します。このとき、Tab エレメントがフォームの大部分を占めるようにしますが、フォーム上にもう 1 つ小さなコントロールを配置できるように下部にスペースを残しておきます。
-
この時点では、コントロールにタブは 1 つもありません。コントロールのコンテキスト メニューを呼び出し、[タブの追加] を選択します。これにより、2 つの動作が発生します。まず、「tab1」というラベルのタブがタブ ヘッダ領域に表示されます。そして、共有コントロール ページ用のラベルが消えます。
-
タブ ヘッダの下のコントロール領域をクリックします。プロパティ シートを見ると、「UltraTabPageControl1」という新しいエレメントが作成されたことがわかります。これが、新しいタブに対応するコントロール コンテナ ページになります。
-
ツールボックスで、[Windows Forms] セクションを選択してから、Button コントロールをダブルクリックします。ボタンがフォームに直接追加されずに、選択したタブ コントロール ページに追加されることがわかります。同じ操作は、フォームの場合とまったく同様に、ボタン ツールをシングルクリックしてタブ上にボタンを描画することでも実現できます。
-
コントロールのコンテキスト メニューを呼び出し、もう一度 [Add Tab] を選択します。今度は「tab2」がタブ ヘッダ領域に表示されることがわかります。
-
「tab2」ヘッダをクリックします。これにより、2 つの動作が発生します。まず、タブ 2 がアクティブになったことを示すようにタブの視覚的な外観が変更されます。そして、追加したボタンが消えます。
Note
|
注: このとき、作成したタブはデザインタイムにアクティブであり、ユーザーがランタイムに操作するのとまったく同じように、ヘッダをクリックすることによってタブを切り替えることができます。また、コントロール領域を選択し、新しいタブ ページ「UltraTabPageControl2」が作成されたことを確認することもできます。
|
-
ツールボックスに戻り、TextBox ツールを選択します。TextBox ツールを Tab コントロールのコントロール領域にドラッグし、上部付近に配置します。
-
これで、それぞれに異なるタイプのコントロールを持つ 2 つのタブができます。2 つのタブの切り替えはヘッダをクリックすることで簡単に実行できます。タブを選択するとそのコントロールが表示されることがわかります。
しかし、最初にコントロールを作成したときに表示されていた共有コントロール ページはどうなったのでしょうか。共有コントロールページは引き続き存在していますが、その上を作成したタブが覆っているため見えなくなっています。再度表示するには、コントロールのコンテキスト メニューを呼び出し、[共通コントロールを表示] を選択します。すると、どちらのタブも選択されていないことを示すようにタブの外観が変更され、[共通コントロールページ] というキャプションが再び表示されます。
-
ツールボックスに戻り、CheckBox コントロールを選択します。CheckBox コントロールを共有コントロール ページに追加し、下部付近に配置します。
-
タブ ヘッダ領域でタブ 1 をクリックします。ボタンが再び表示されますが、チェックボックスもまだ表示されています。タブ 2 をクリックしてもチェックボックスは表示されたままであり、どちらのタブを選択しても表示されています。
-
ここまで、デザインタイムにコントロールをタブに追加する方法を見てきました。ランタイムにも、少しのコードを使用するだけでコントロールを簡単に追加できます。
ツールボックスに戻り、もう一度 Button コントロールを選択します。ただし、今度は Tab コントロールの下にあるフォーム上の空の領域に直接配置します。
-
コントロールでタブ 1 を選択してから、Button1 コントロールをダブルクリックします。次のコードをボタンの Click イベントに入力します。
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim ctrlIndex As Integer
' コントロールを 1 番目のタブに追加します。
Me.UltraTabPageControl1.Controls.Add(Me.Button2)
' 追加したコントロールのコレクション内でのインデックスを返します。
ctrlIndex = Me.UltraTabPageControl1.Controls.GetChildIndex(Me.Button2)
' 新しく追加したコントロールの位置を設定します。
Me.UltraTabPageControl1.Controls(ctrlIndex).Location = New Point(10, 40)
End Sub
private void button1_Click(object sender, System.EventArgs e)
{
// コントロールを 1 番目のタブに追加します。
this.ultraTabPageControl1.Controls.Add(this.button2);
// 追加したコントロールのコレクション内でのインデックスを返します。
int ctrlIndex = this.ultraTabPageControl1.Controls.GetChildIndex(this.button2);
// 新しく追加したコントロールの位置を設定します。
this.ultraTabPageControl1.Controls[ctrlIndex].Location = new Point(10, 40);
}
-
Button2 をダブルクリックし、次のコードをそのボタンの Click イベントに入力します。
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
Dim TextBox2 As New TextBox()
Dim ctrlIndex As Integer
TextBox2.Text = "TextBox2"
Me.UltraTabPageControl1.Controls.Add(TextBox2)
ctrlIndex = Me.UltraTabPageControl1.Controls.GetChildIndex(TextBox2)
Me.UltraTabPageControl1.Controls(ctrlIndex).Location = New Point(10, 80)
End Sub
private void button2_Click(object sender, System.EventArgs e)
{
TextBox TextBox2 = new TextBox();
TextBox2.Text = "TextBox2";
this.ultraTabPageControl1.Controls.Add(TextBox2);
int ctrlIndex = this.ultraTabPageControl1.Controls.GetChildIndex(TextBox2);
this.ultraTabPageControl1.Controls[ctrlIndex].Location = new Point(10, 80);
}
-
プロジェクトを実行し、Button1 をクリックします。Button2 が、Button1 と同じタブの、指定した位置(コンテナからの相対的な位置)に移動します。この方法を使用して、アプリケーションにすでに存在するコントロールを取得し、その親を選択したタブに変更できます。
-
Button2 をクリックします。コード内で定義されたテキストボックス(TextBox2)が、同じタブ上の、Button2 の真下に表示されます。この方法を使用して、ランタイムに動的にコントロールを作成し、必要に応じてタブ上に配置できます。