簡體   English   中英

面板不更新TreeView

[英]Panel Does not update TreeView

我有一個顯示在面板內的TreeView。 TreeView中的數據基於從數據庫返回的數據。 第一次,數據是正確的。 第二次,不刷新TreeView,並且先前的數據仍顯示在樹中。 我檢查了包含數據的列表。 該列表返回了正確的數據。 我已經找到了Google的問題,並且無法通過發布的一些答案來解決。 這是有關如何創建TreeView並將其添加到面板的示例代碼。

    ReportGroups gr = new ReportGroups();
    var Name = gr.GetReportName(groupID);
    TreeView tr = new TreeView();
    tr.BeginUpdate();
    tr.Size = new Size(570, 600);
    tr.Name = "Home";
    tr.Nodes.Add("Reports Name");
    tr.CheckBoxes = true;
    if (Name.Count() > 0)
    {
        foreach (var item in Name)
        {
            if (item != null)
            {
                tr.Nodes[0].Nodes.Add(item.reportName);
            }
        }
    }
    tr.Nodes[0].ExpandAll();
    tr.EndUpdate();
    this.pDisplayReportName.Width = tr.Width * 2;
    this.pDisplayReportName.Height = 300;
    this.pDisplayReportName.Controls.Add(tr);
    this.pDisplayReportName.Refresh();   

我究竟做錯了什么?

最簡單的選擇是使用this.pDisplayReportName.Controls.Clear(); 就在tr.EndUpdate(); 但是,如果您在同一面板中有其他控件,則可能會導致問題。

最好的選擇是使用this.pDisplayReportName.Controls.RemoveByKey("MyTree"); 而不是this.pDisplayReportName.Controls.Clear();

並且,另一種選擇是在設計時添加TreeView(名稱為tr ),而不是動態地添加到面板中。 然后,使用tr.Nodes.Clear(); tr.BeginUpdate();之前tr.BeginUpdate(); 並從代碼中刪除以下兩行。

TreeView tr = new TreeView();
.
.
.
this.pDisplayReportName.Controls.Add(tr);

干杯

嘗試添加this.pDisplayReportName.Clear(); 因此數據不會加倍。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM