1. 程式人生 > >c#——Winform DatagridView上顯示下拉樹(二)

c#——Winform DatagridView上顯示下拉樹(二)

除了能夠顯示可下拉的樹,提供選擇。

當樹中資料比較多的時候,我們肯定還希望能夠對樹中內容進行查詢,於是擴充套件繼續

首先需要看上一篇部落格

http://blog.csdn.net/Shiyaru1314/article/details/51920494

基於上一篇這裡再做一些擴充套件

當然其實查詢也可以放在我們實際的模組中在進行操作

但是為了能夠對擴充套件的空間重複方便的使用,就在擴充套件控制元件中新增該功能

在ComboBoxTreeView類中,新增如下程式碼

 public void SearchTreeView()
        {
            if (string.IsNullOrEmpty(Text)) return;
            for (int i = TreeView.Nodes.Count - 1; i >= 0; i--)
            {
                GetSearchNodes(TreeView.Nodes[i]);
            }
        }

        private void GetSearchNodes(TreeNode tn)
        {
            for (int i = tn.Nodes.Count - 1; i >= 0; i--)
            {
                GetSearchNodes(tn.Nodes[i]);
            }
            if (!tn.Text.Contains(Text) && tn.Nodes.Count == 0)
            {
                tn.Remove();
            }
        }

        protected override void OnKeyPress(KeyPressEventArgs e)
        {
            if (e.KeyChar != (char)Keys.Space)
                return;
            ShowDropDown();
            base.OnKeyPress(e);
        }
主要是對樹結構的遞迴查詢樹中所有節點,並刪除不符合要求的節點。

然後按下空格鍵的時候出發下拉事件,下拉事件中會呼叫查詢過濾方法SearchTreeView

以上就可以達到,在combox中輸入文字,按下空格鍵的時候顯示符合當前輸入的樹,從中選擇符合要求的節點顯示。