WinForms.TreeView控制項

來源:互聯網
上載者:User
樹形結構是如何產生的
TreeView其實沒有哪個屬性指明哪個節點為根節點,TopNode真不知道是幹什麼用的;
它的樹形結構是這樣產生的:
TreeView tvEg = new TreeView( );

TreeNode rootNode = new TreeNode("Folder0");
TreeNode subNode1 = new TreeNode("Folder0.1");
TreeNode subNode2 = new TreeNode("Folder0.2");

tvEg.Nodes.Add(rootNode);
rootNode.Nodes.Add(subNode1);
rootNode.Nodes.Add(subNode2);

subNode1.Nodes.Add(new TreeNode("File1"));
subNode1.Nodes.Add(new TreeNode("File2"));

subNode2.Nodes.Add(new TreeNode("File1"));

於是就會形成這樣一個樹形結構:

還需要注意的一點就是使用TreeNode對象時,尤其關注其Name屬性和Text屬性是不同的。

問題:我想實現動態載入節點集合,但是如果事先不載入,這個父節點就不會出現+/-號,於是我就無法對應其Exband事件,怎麼辦?
我目前的實現方式是在表單Load時靜態載入全部節點,這樣就沒有必要再去處理Exband事件了;
但是,一旦節點非常多,這個載入時間可能就太長了!怎麼辦呢?
答案:可以為其添加一個虛節點,以顯示展開符號;然後在展開該節點的時候就可以先清除其所以子節點,然後動態載入其子節點

問題:如何在一個帶CheckedBox的二級TreeView中實現一種有邏輯的選擇操作,即(取消)選擇父節點則(取消)選擇了其下的所以子節點,取消全部子節點時則父節點也被取消,否則只有還有一個子節點在,父節點就是被選擇狀態。
答案:參考以下代碼

捕捉AfterCheck事件
private void tvw_AfterCheck(object sender, TreeViewEventArgs e)
{
    TreeNode currentNode = e.Node;

    if ( currentNode.Nodes.Count > 0 )
    {
        // 一級節點
        foreach ( TreeNode childNode in e.Node.Nodes )
        {
            childNode.Checked = currentNode.Checked;
        }
    }
    else
    {
        // 二級節點
        bool parentNodeChecked = false;
        TreeNode parentNode = currentNode.Parent;
        if ( parentNode != null )
        {
            if (currentNode.Checked)
            {
                parentNodeChecked = true;
            }
            else
            {
                foreach ( TreeNode node in parentNode.Nodes )
                {
                    if ( node.Checked )
                    {
                        //如果其中的一個已經checked
                        parentNodeChecked = true;
                        break;
                    }
                }
            }

            parentNode.Checked = parentNodeChecked;
        }
    }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.