03.タブを削除する
タブを削除するにはいくつかの方法があります。
- タブを直接指定して削除する
- インデックスを指定して削除する
- すべてのタブを削除する
タブを直接指定して削除を行う場合にはItemsプロパティのRemoveメソッドを使用します。引数には、削除したいタブのインスタンスを指定します。
インデックスを指定して削除を行う場合にはItemsプロパティのRemoveAtメソッドを使用します。引数には削除するタブのインデックス番号(先頭のタブから0,1,2と数える)を指定します。
すべてのタブを削除する場合にはItemsプロパティのClearメソッドを使用します。
下記は、上記のメソッドを使用してタブを削除する例です。

<StackPanel Height="241">
<StackPanel Orientation="Horizontal">
<Button Name="btnLastTabDel" Content="最後のタブを削除する" Width="144" />
<Button Name="btnTabItem2Del" Content="TabItem2を削除" Height="23" Width="115" />
<Button Name="btnAllTabDel" Content="全タブを削除" Height="23" Width="89" />
</StackPanel>
<TabControl Name="TabControl1" Margin="0,3,0,0" Height="140">
<TabItem Header="TabItem1" Name="TabItem1">
<Grid />
</TabItem>
<TabItem Header="TabItem2" Name="TabItem2">
<Grid />
</TabItem>
<TabItem Header="TabItem3" Name="TabItem3">
<Grid />
</TabItem>
<TabItem Header="TabItem4" Name="TabItem4">
<Grid />
</TabItem>
<TabItem Header="TabItem5" Name="TabItem5">
<Grid />
</TabItem>
</TabControl>
</StackPanel>
' [最後のタブを削除する]ボタンクリック時の処理
Private Sub btnLastTabDel_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnLastTabDel.Click
'最後のタブのインデックスを取得
Dim lastIndex As Integer = TabControl1.Items.Count - 1
If lastIndex = -1 Then Return
'最後のタブを削除
TabControl1.Items.RemoveAt(lastIndex)
End Sub
' [TabItem2を削除]ボタンクリック時の処理
Private Sub btnTabItem2Del_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnTabItem2Del.Click
'TabItem2を削除
TabControl1.Items.Remove(TabItem2)
End Sub
' [全タブを削除]ボタンクリック時の処理
Private Sub btnAllTabDel_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnAllTabDel.Click
'全タブを削除
TabControl1.Items.Clear()
End Sub
// [最後のタブを削除する]ボタンクリック時の処理
private void btnLastTabDel_Click(object sender, RoutedEventArgs e)
{
// 最後のタブのインデックスを取得
int lastIndex = tabControl1.Items.Count - 1;
if (lastIndex == -1) return;
// 最後のタブを削除
tabControl1.Items.RemoveAt(lastIndex);
}
// [TabItem2を削除]ボタンクリック時の処理
private void btnTabItem2Del_Click(object sender, RoutedEventArgs e)
{
// TabItem2 を削除
tabControl1.Items.Remove(tabItem2);
}
// [全タブを削除]ボタンクリック時の処理
private void btnAllTabDel_Click(object sender, RoutedEventArgs e)
{
// 全タブを削除
tabControl1.Items.Clear();
}
タブを直接指定して削除するにはItemsプロパティのRemoveメソッドを使用する。
インデックスを指定して削除するにはItemsプロパティのRemoveAtメソッドを使用する。
すべてのタブを削除するにはItemsプロパティのClearメソッドを使用する。
04.任意のタブを無効にする
XAMLで任意のタブを無効にする場合は、TabItem要素のIsEnabled属性にFalseを指定します。
また、コードから任意のタブを無効にする方法は
- TabItemのIsEnabledプロパティにFalseを指定する方法
- TabControlのItemsプロパティでIsEnabledプロパティにFalseを指定する方法
があります。
下記は、任意のタブを無効にする例です。
XAML内ではTabItem2を無効にしています。また、コード内ではTabItem4とTabItem5を無効にしています。

<TabControl Name="TabControl1">
<TabItem Header="TabItem1" Name="TabItem1">
<Grid />
</TabItem>
<!-- TabItem2 を無効にする -->
<TabItem Header="TabItem2" Name="TabItem2" IsEnabled="False">
<Grid />
</TabItem>
<TabItem Header="TabItem3" Name="TabItem3">
<Grid />
</TabItem>
<TabItem Header="TabItem4" Name="TabItem4">
<Grid />
</TabItem>
<TabItem Header="TabItem5" Name="TabItem5">
<Grid />
</TabItem>
</TabControl>
Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
'4番目のタブを無効にする
TabItem4.IsEnabled = False
'5番目のタブを無効にする
DirectCast(TabControl1.Items(4), TabItem).IsEnabled = False
End Sub
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// 4番目のタブを無効にする
tabItem4.IsEnabled = false;
// 5番目のタブを無効にする
((TabItem)tabControl1.Items[4]).IsEnabled = false;
}
タブを無効にするには、TabItemのIsEnabledプロパティにFalseを設定するか、TabControlのItemsプロパティのIsEnabledプロパティにFalseを設定する。
