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ステートメントを使ってエラー回避の処理を組み込んでいます。
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
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コントロールを使ってみてはいかがでしょうか。