- PR -

Treeviewのノードを選択するには

1
投稿者投稿内容
Toshi
会議室デビュー日: 2008/01/23
投稿数: 4
投稿日時: 2008-01-23 22:55
よろしくお願いします。
VS2005(VB)でWeb開発を始めました初心者です。

ページがロードされたときに、Treeviewのルートを選択状態にする設定を
しました。その後ルート以外のノードがユーザによって選択されても、
ボタンを押すと、またルートを選択した状態にしたいのですが
このボタンのコードはどのような記述をすればよいでしょうか。
Treeview1.selectednodeは値の取得しか出来ないようです。

何かヒントがありましたらよろしくお願いいたします。

くまっち
大ベテラン
会議室デビュー日: 2008/01/18
投稿数: 169
お住まい・勤務地: 茨城県のどこか。
投稿日時: 2008-01-24 12:21
TreeNode.Selectedの値をTrueにするか
TreeNode.Select()メソッドを呼び出す事で
そのノードを選択状態に設定できます。

常に選択されたノードのルートを選択状態にするには
選択されたノードの最上位ノードを取得すれば良いかと。

最上位ノードの取得はTreeNode.Parentを
再帰的に辿って行き、TreeNode.Parent Is Nothingのノードが
最上位ノードという事になります。

再帰的に辿るには、再帰関数を定義するのがベストかと思われます。
Toshi
会議室デビュー日: 2008/01/23
投稿数: 4
投稿日時: 2008-01-25 13:01
回答ありがとうございます。
選択状態にする方法について理解できました。
再帰関数については勉強したことがないので、調べた上で
再帰的に辿る方法を試してみたいと思います。
取り急ぎ、書込みさせていただきました。

くまっち
大ベテラン
会議室デビュー日: 2008/01/18
投稿数: 169
お住まい・勤務地: 茨城県のどこか。
投稿日時: 2008-01-25 14:38
再帰関数とは、自分自身を呼び出す構造(再帰構造)をした関数のことです。

同質問が今後出たときの為に、サンプルコードを提示しておきます。
コード:
// 指定ノードの最上位ノードを取得する(C#)
protected TreeNode getRootNode( TreeNode node )
{
    return (node.Parent == null) ? node : getRootNode( node.Parent );
}


コード:
'' 指定ノードの最上位ノードを取得する(VB.NET)
Protected Function getRootNode(ByVal node As TreeNode) As TreeNode
    If node.Parent Is Nothing Then
        getTreeNode = node
    Else
        getTreeNode = getRootNode(node.Parent)
    End If
End Function

1

スキルアップ/キャリアアップ(JOB@IT)