SHOEISHA iD

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

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

ComponentZine(ComponentOne)

ドラッグ&ドロップで項目移動できる
ツリービューを持ったSilverlightアプリケーションの作成

ComponentOne Studio for SilverlightのC1TreeViewコントロールを使ったWebページの作成

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

TextBoxコントロールとイベントハンドラの処理

 最後に、反則金を表示するTextBoxコントロールをグリッドの右側に配置し、イベントハンドラにその処理を作成します。

<TextBox Grid.Column="1" FontSize="14" Name="TextBox1" Height="104" HorizontalAlignment="Left" 
              Margin="21,44,0,0" VerticalAlignment="Top" Width="207" AcceptsReturn="True">
  <TextBox.Effect>
    <DropShadowEffect BlurRadius="5" Color="DarkGray" />
  </TextBox.Effect>
</TextBox>

 イベントハンドラの処理では、リスト項目が選択されると、C1TreeViewコントロールのSelectedItemプロパティに選択されたC1TreeViewItemオブジェクトへの参照が格納されます。ここでは、各C1TreeViewItemオブジェクトに名前を付けているため、そのNameプロパティでどのノードが選択されたのかを識別し、TextBoxコントロールへの表示を振り分けています。

 なお、すべてのC1TreeViewItemオブジェクトに名前を付けていないので、名前のないノード(C1TreeViewItemオブジェクト)が選択されると「NullReferenceException」というエラーが発生します。そのため、Tryステートメントを使ってエラー回避の処理を組み込んでいます。

Visual Basic
Imports C1.Silverlight

Partial Public Class MainPage
  Inherits UserControl

  Public Sub New()
    InitializeComponent()
  End Sub

  Private Sub TreeView1_SelectionChanged(ByVal sender As System.Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs)
    Try
      Dim si As C1TreeViewItem = TreeView1.SelectedItem
      Dim kingaku As String = ""

      If si.Name = "" Then
        Exit Sub
      End If

      Select Case si.Name
          Case "Item1"
              kingaku = 35
          Case "Item2"
              kingaku = 25
          Case "Item3"
              kingaku = 18
          Case "Item4"
              kingaku = 15
          Case "Item5"
              kingaku = 12
          Case "Item6"
              kingaku = 9
          Case "Item7"
              kingaku = 35
          Case "Item8"
              kingaku = 30
          Case "Item9"
              kingaku = 25
          Case "Item10"
              kingaku = 9
          Case "Item11"
              kingaku = 7
          Case "Item12"
              kingaku = 3
          Case "Item13"
              kingaku = 9
      End Select

      TextBox1.Text = "普通車の反則金額は" + kingaku + "千円"
    Catch ex As NullReferenceException

    End Try
  End Sub
End Class
C#
using C1.Silverlight;
namespace sl_TreeView2011_cs
{
  public partial class MainPage : UserControl
  {
    public MainPage()
    {
      InitializeComponent();
    }

    private void TreeView1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
      try
      {
        String si = TreeView1.SelectedItem.Name;
        String kingaku = "";
        
        if (si == "")
        {
            return;
        }

        switch (si)
        {
          case "Item1":
              kingaku = "35";
              break;
          case "Item2":
              kingaku = "25";
              break;
          case "Item3":
              kingaku = "18";
              break;
          case "Item4":
              kingaku = "15";
              break;
          case "Item5":
              kingaku = "12";
              break;
          case "Item6":
              kingaku = "9";
              break;
          case "Item7":
              kingaku = "35";
              break;
          case "Item8":
              kingaku = "30";
              break;
          case "Item9":
              kingaku = "25";
              break;
          case "Item10":
              kingaku = "9";
              break;
          case "Item11":
              kingaku = "7";
              break;
          case "Item12":
              kingaku = "3";
              break;
          case "Item13":
              kingaku = "9";
              break;
        }
          TextBox1.Text = "普通車の反則金額は" + kingaku + "千円";
        }
      catch (NullReferenceException ex)
      {      
      }
    }

  }
}

まとめ

 今回は、C1TreeViewコントロールを使ってアイコンと文字色を組み合わせ、見栄えの良い綺麗なツリーを作成してみました。リスト項目がドラッグ&ドロップで入れ替えられるようになると、例えば、組織図を階層ツリーにしてメンバーの入れ替えをシミュレートしたり、ユーザーごとにリストの順序を入れ替える、などという形でアプリケーションを作ることができます。標準のTreeViewコントロールでは物足りないという方は、C1TreeViewコントロールを使ってみてはいかがでしょうか。

参考文献

製品情報

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5985 2011/10/24 18:55

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング