SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Silverlight/WPFで使える逆引きTips集

Silverlight/WPFで使える逆引きTips集
――タブ機能

(7) TabControlとTabItemコントロール

03.タブを削除する

 タブを削除するにはいくつかの方法があります。

  1. タブを直接指定して削除する
  2.  タブを直接指定して削除を行う場合にはItemsプロパティRemoveメソッドを使用します。引数には、削除したいタブのインスタンスを指定します。

  3. インデックスを指定して削除する
  4.  インデックスを指定して削除を行う場合にはItemsプロパティRemoveAtメソッドを使用します。引数には削除するタブのインデックス番号(先頭のタブから0,1,2と数える)を指定します。

  5. すべてのタブを削除する
  6.  すべてのタブを削除する場合にはItemsプロパティClearメソッドを使用します。

 下記は、上記のメソッドを使用してタブを削除する例です。

タブを削除する例
タブを削除する例
XAMLの例
<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>
VBの例
' [最後のタブを削除する]ボタンクリック時の処理
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
C#の例
// [最後のタブを削除する]ボタンクリック時の処理
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を無効にしています。

任意のタブを無効にする例
任意のタブを無効にする例
XAMLの例
<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>
VBの例
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
C#の例
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を設定する。

次のページ
05.任意のタブを選択状態にする

この記事は参考になりましたか?

Silverlight/WPFで使える逆引きTips集連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5704 2011/02/01 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー