1

複数選択のツリービューコンポーネントが必要です。そこで、「複数選択のC#TreeView 」をダウンロードしました。現在、アイテムの削除に問題があります。次のコードは正常に実行されますが、何も削除されません。

private void removeToolStripMenuItem_Click(object sender, EventArgs e)
{
    for (int i = 0; i < treeView1.SelectedNodes.Count; i++)
    {
        try
        {
            if (treeView1.Nodes[i].IsSelected)
            {
                treeView1.Nodes[i].Remove();
                i--;
            }
        }
        catch { }
    } 

        treeView1.Update();
        treeView1.Refresh();
}

treeView1.SelectedNodes.Remove();

オブジェクトが必要ですが、どれかわかりません。

foreach (TreeNode tn in treeView1.SelectedNodes)
            tn.Remove();

コレクションが変更されたため、例外をスローします。

誰かが私を助けることができますか?

ありがとう!

4

1 に答える 1

3

後方ループを試して、選択したノードを渡すNodesコレクションでRemoveメソッドを使用します

private void removeToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    for (int i = treeView1.SelectedNodes.Count - 1; i >= 0; i--)
    {
        TreeNode n = (TreeNode)treeView1.SelectedNodes[i];
        treeView1.Nodes.Remove(n);
    }
    treeView1.Update(); 
    treeView1.Refresh(); 
} 

また、既にSelectedNodesプロパティを使用しているため、ノードがIsSelectedであるかどうかをテストする必要はないと思います。(実際、これがこのカスタマイズされたツリービュークラスの場合であるかどうかは確認していませんが、名前は、含まれているノードがすでに選択されていることを示しています)

于 2012-07-19T21:02:21.340 に答える