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コントロールを使ってみてはいかがでしょうか。
