SHOEISHA iD

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

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

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

Silverlight/WPFで使える逆引きTips集
――ツリービュー機能

(13) TreeViewコントロール

  • X ポスト
  • このエントリーをはてなブックマークに追加

02.動的に項目を追加する

 ツリービューにルート項目を追加する場合はTreeViewクラスItemsプロパティが持つAddメソッドを使用し、子項目を追加する場合はTreeViewItemクラスItemsプロパティが持つAddメソッドを使用します。

 下記は[追加]ボタンがクリックされた時に、ルート項目に子項目を追加する例です。

動的に項目を追加する例
動的に項目を追加する例
XAMLの例(WPFの例)
<DockPanel LastChildFill="True">
    <StackPanel Orientation="Horizontal" DockPanel.Dock="Top" Margin="3">
        <TextBlock Text="追加項目名:"/>
        <TextBox Name="TextBox1" Width="100" />
        <Button Name="Button1" Content="追加"/>
    </StackPanel>
    <TreeView>
        <TreeViewItem Name="rootItem" Header="親" />
    </TreeView>
</DockPanel>
XAMLの例(Silverlightの例)
<TextBlock Height="23" HorizontalAlignment="Left" Margin="12,49,0,0" 
           Text="追加項目名:" VerticalAlignment="Top" />
<TextBox Height="24" HorizontalAlignment="Left" Margin="84,45,0,0" 
         VerticalAlignment="Top" Width="120" Name="TextBox1" />
<Button Content="追加" Height="23" HorizontalAlignment="Left" 
        Margin="210,45,0,0" VerticalAlignment="Top" 
        Width="51" Name="Button1" />
<sdk:TreeView Height="200" HorizontalAlignment="Left" Margin="10,78,0,0" 
              VerticalAlignment="Top" Width="251">
    <sdk:TreeViewItem Header="親" Name="rootItem"/>
</sdk:TreeView>
VBの例
''' <summary>
''' [追加]ボタンクリック時の処理
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
    Dim newItem As New TreeViewItem

    '追加する子項目のラベルを設定
    newItem.Header = TextBox1.Text
    'ルート項目に子項目を追加
    rootItem.Items.Add(newItem)
End Sub
C#の例
/// <summary>
/// [追加]ボタンクリック時の処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Button1_Click(object sender, RoutedEventArgs e)
{
    TreeViewItem newItem = new TreeViewItem();

    // 追加する子項目のラベルを設定
    newItem.Header = TextBox1.Text;
    // ルート項目に子項目を追加
    rootItem.Items.Add(newItem);
}
ポイント

 ツリービューのルート項目を追加するにはTreeViewクラスのItemsプロパティが持つAddメソッドを使用する。

 ツリービュー項目を追加するにはTreeViewItemクラスのItemsプロパティが持つAddメソッドを使用する。

03.選択された項目を取得する

 現在選択されている項目を取得するには、TreeViewクラスのSelectedItemプロパティを使用します。また、選択項目が変更されるとSelectedItemChangedイベントが発生します。

 下記は、選択された項目をテキストブロックに表示する例です。SelecteItemChangedイベント内で、選択された項目のHeaderプロパティの内容をテキストブロックに表示します。

選択された項目を取得する例
選択された項目を取得する例
XAMLの例(WPFの例)
<DockPanel Name="DockPanel1" LastChildFill="True">
    <TextBlock Name="TextBlock1" Margin="3" DockPanel.Dock="Bottom"/>
    <TreeView Name="TreeView1" DockPanel.Dock="Top">
        <TreeViewItem Header="親1">
            <TreeViewItem Header="子1" />
            <TreeViewItem Header="子2">
                <TreeViewItem Header="孫1" />
                <TreeViewItem Header="孫2" />
            </TreeViewItem>
        </TreeViewItem>
    </TreeView>
</DockPanel>
XAMLの例(Silverlightの例)
<sdk:TreeView Height="200" HorizontalAlignment="Left" Margin="12,44,0,0" 
              VerticalAlignment="Top" Width="251" Name="TreeView1">
    <sdk:TreeViewItem Header="親">
        <sdk:TreeViewItem Header="子1" />
        <sdk:TreeViewItem Header="子2">
            <sdk:TreeViewItem Header="孫1" />
            <sdk:TreeViewItem Header="孫2" />
        </sdk:TreeViewItem>
    </sdk:TreeViewItem>
</sdk:TreeView>
<TextBlock Height="23" HorizontalAlignment="Left" Margin="12,250,0,0" 
           Name="TextBlock1" Text="選択項目:" VerticalAlignment="Top" />
VBの例
''' <summary>
''' 選択項目変更時の処理
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TreeView1_SelectedItemChanged(ByVal sender As System.Object, ByVal e As System.Windows.RoutedPropertyChangedEventArgs(Of System.Object)) Handles TreeView1.SelectedItemChanged
    '選択された項目を取得する
    Dim selectedItem As TreeViewItem = TreeView1.SelectedItem

    '選択項目のラベルをテキストブロックに表示する
    TextBlock1.Text = "選択項目:" & selectedItem.Header
End Sub
C#の例
/// <summary>
/// 選択項目変更時の処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TreeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
    // 選択された項目を取得する
    TreeViewItem selectedItem = (TreeViewItem)TreeView1.SelectedItem;

    // 選択項目のラベルをテキストブロックに表示する
    TextBlock1.Text = "選択項目:" + selectedItem.Header;
}
ポイント

 現在選択されている項目を取得するにはTreeViewクラスのSelectedItemプロパティを参照する。

 選択項目が変更されたことを知るにはSelectedItemChangedイベントを使用する。

次のページ
04.選択された項目のパスを取得する

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
Silverlight/WPFで使える逆引きTips集連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5870 2011/04/19 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング