0

各ノードの選択に基づいて、フォームの右側に適切なグループ ボックスを表示し、他のグループ ボックスを非表示にする必要があります。最も単純なものはありますか? if else 条件をネストする以外の方法。

4

1 に答える 1

0

考えられる解決策は次のとおりです。

TreeNode のTag プロパティを他の目的でまだ使用していないと仮定すると、そのプロパティを対応する GroupBox コントロールに設定できます。次に、TreeView コントロールのNodeMouseClick イベントをサブスクライブし、選択したノードの Tag プロパティを使用して、表示する GroupBox を決定します。他のすべては非表示にする必要があります。

もちろん、GroupBox への参照を配列に格納する必要があります。そうすれば、すべてのグループ ボックスを非表示にするのは次のように簡単です。

foreach(var gb in arrayOfGroupBoxes)
{
    gb.Visible = false;
}

NodeMouseClick イベント ハンドラーの実装は次のようになります。

void TVNodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    var activeGroupBox = e.Node.Tag as GroupBox;

    foreach(var gb in arrayOfGroupBoxes)
    {            
        gb.Visible = ReferenceEquals(activeGroupBox, gb);
    }
}
于 2013-02-25T16:19:12.937 に答える