C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.34788 の関連記事表示

<< 0 >>
■34788  TreeViewの子ノードを削除する方法について
□投稿者/ しまうま -(2009/04/09(Thu) 09:57:57)
>

    分類:[.NET 全般] 

    OS:WindowsXP
    開発環境:
    ASP.NET
    VisualStudio2005
    言語:C#

    お世話になります。C#を始めて1ヶ月あまりの初心者です。
    TreeViewの子ノードを削除する方法について教えてください。

    TreeViewでノードを選択し、削除ボタンを押すと選択したノードが削除されるプログラムを作りたいのですが、親ノードはうまく削除されるのですが選択したノードが子ノードだと削除されません。
    現在以下のソースで処理しております。
    (参考Webサイトとはちょっと違いますが、参考通りだと「'System.Web.UI.WebControls.TreeNode' に 'Remove' の定義がありません。」とでます。TreeView1.SelectedNodeプロパティにはRemoveメソッドがないとの意味なのかと思っておりますが・・・)


    protected void DelBtn_Click(object sender, EventArgs e)
    {
    if (TreeView1.SelectedNode != null)
    {
    TreeView1.Nodes.Remove(TreeView1.SelectedNode);
    }
    }

    デバッグで見ると「SelectedNode」にはちゃんと選択したノード情報(Value値などが選択したノードの値)が入っています。
    例:
    (コントロール名:TreeView1)

    -親ノード
     |→子ノード1
     |→子ノード2(選択)
    「削除」ボタンクリック

    <TreeView1.SelectedNodeのデバッグ内容>
    - TreeView1.SelectedNode {System.Web.UI.WebControls.TreeNode} System.Web.UI.WebControls.TreeNode
    Checked false bool
    + ChildNodes {System.Web.UI.WebControls.TreeNodeCollection} System.Web.UI.WebControls.TreeNodeCollection
    DataBound false bool
    DataItem null object
    DataPath "" string
    Depth 1 int
    Expanded null bool?
    ImageToolTip "" string
    ImageUrl "" string
    NavigateUrl "" string
    + Parent {System.Web.UI.WebControls.TreeNode} System.Web.UI.WebControls.TreeNode
    PopulateOnDemand false bool
    SelectAction Select System.Web.UI.WebControls.TreeNodeSelectAction
    Selected true bool
    ShowCheckBox null bool?
    Target "" string
    Text "子ノード2" string
    ToolTip "" string
    Value "子ノード2" string
    ValuePath "親ノード/子ノード2" string
    + パブリックでないメンバ

    **************************************************************

    TreeViewの構成(プロパティとかメソッドとか)自体がまだ良くわかっていない上にプログラミング自体未熟者なため、この処理そのものが間違えているのか、ほかに何か処理が足りないのか(バインドとか?)すらわかりません。

    Webサイトに乗っているプロパティなどもちょっと違ったりするので(同じC#と言っていても記載されているプロパティやメソッドがない場合があります。もちろんバージョンとかにも依存するとは思いますが・・・)他にメソッドなどがあるのかなど(Clearとか)も調べてみましたが、だめでした。
    なぜ子ノードだと削除されないのか、教えてください!!(削除対象となるノードの指定の仕方が悪いのでしょうか?)
    よろしくお願いします。
親記事 /過去ログ60より / 関連記事表示
削除チェック/

■34791  Re[1]: TreeViewの子ノードを削除する方法について
□投稿者/ .SHO -(2009/04/09(Thu) 12:33:59)
    > protected void DelBtn_Click(object sender, EventArgs e)
    > {
    > if (TreeView1.SelectedNode != null)
    > {
    > TreeView1.Nodes.Remove(TreeView1.SelectedNode);
    > }
    > }

    このソース自体には問題はないと思います。
    どこか他に原因があるのではないでしょうか?
記事No.34788 のレス /過去ログ60より / 関連記事表示
削除チェック/

■34800  Re[2]: TreeViewの子ノードを削除する方法について
□投稿者/ 倉田 有大 -(2009/04/09(Thu) 21:42:32)
    No34791 (.SHO さん) に返信
    >> protected void DelBtn_Click(object sender, EventArgs e)
    >> {
    >> if (TreeView1.SelectedNode != null)
    >> {
    >> TreeView1.Nodes.Remove(TreeView1.SelectedNode);
    >> }
    >> }
    >
    > このソース自体には問題はないと思います。
    > どこか他に原因があるのではないでしょうか?

    ですよね。どこが間違ってるのかわからなかった。
記事No.34788 のレス /過去ログ60より / 関連記事表示
削除チェック/

■34804  Re[1]: TreeViewの子ノードを削除する方法について
□投稿者/ Azulean -(2009/04/09(Thu) 22:50:00)
    ASP.NETの質問なのでWindows Formsと思いこまないように注意しましょう。
    
    ■No34788 (しまうま さん) に返信
    > (参考Webサイトとはちょっと違いますが、参考通りだと「'System.Web.UI.WebControls.TreeNode' に 'Remove' の定義がありません。」とでます。TreeView1.SelectedNodeプロパティにはRemoveメソッドがないとの意味なのかと思っておりますが・・・)
    
    > Webサイトに乗っているプロパティなどもちょっと違ったりするので(同じC#と言っていても記載されているプロパティやメソッドがない場合があります。もちろんバージョンとかにも依存するとは思いますが・・・)他にメソッドなどがあるのかなど(Clearとか)も調べてみましたが、だめでした。
    
    参考サイトはWindows Formsの話です。
    ASP.NETでは同じ名前のクラスでも、全く別物ですのでやり方が違うことが多いと思います。
    
    ASP.NET(System.Web.UI.WebControls.TreeNode)
    http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.treenode.aspx
    Windows Forms(System.Windows.Forms.TreeNode)
    http://msdn.microsoft.com/ja-jp/library/system.windows.forms.treenode.aspx
    
    > なぜ子ノードだと削除されないのか、教えてください!!(削除対象となるノードの指定の仕方が悪いのでしょうか?)
    > よろしくお願いします。
    TreeView.NodesでRemoveを実行すると一番上のノード一覧から削除するイメージです。
    子ノードだけ消したい場合は、その一つ上のノード一覧から削除しなければなりません。
    
    イメージとしてはこんな感じかな?
    
    TreeNode selectedNode = TreeView1.SelectedNode;
    if (selectedNode == null) return;
    TreeNode parentNode = selectedNode.Parent;
    if (parentNode != null)
    {
        parentNode.ChildNodes.Remove(selectedNode);
    }
    else
    {
        TreeView1.Nodes.Remove(selectedNode);
    }
    
記事No.34788 のレス /過去ログ60より / 関連記事表示
削除チェック/

■34805  Re[2]: TreeViewの子ノードを削除する方法について
□投稿者/ Azulean -(2009/04/09(Thu) 22:53:11)
    ただ、私は普段、ASP.NETをやらないのでもっと効率的なやり方があるかもしれません。

    # Windows Formsだと、TreeView.Nodes.Removeで消せるんだけどねー。
記事No.34788 のレス /過去ログ60より / 関連記事表示
削除チェック/

■34807  Re[3]: TreeViewの子ノードを削除する方法について
□投稿者/ 倉田 有大 -(2009/04/10(Fri) 01:33:48)
    No34805 (Azulean さん) に返信
    > ただ、私は普段、ASP.NETをやらないのでもっと効率的なやり方があるかもしれません。
    >
    > # Windows Formsだと、TreeView.Nodes.Removeで消せるんだけどねー。

    あ、なるほど、微妙に違うんですね。
    ASP.NETでも、ここらへんは同じと思い込んでいました。
記事No.34788 のレス /過去ログ60より / 関連記事表示
削除チェック/

■34809  Re[3]: TreeViewの子ノードを削除する方法について
□投稿者/ .SHO -(2009/04/10(Fri) 09:31:25)
    > ただ、私は普段、ASP.NETをやらないのでもっと効率的なやり方があるかもしれません。
    >
    > # Windows Formsだと、TreeView.Nodes.Removeで消せるんだけどねー。

    なるほど!
    勉強になりました。
記事No.34788 のレス /過去ログ60より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -