我的觀點是在StatusStripLabel中顯示所有子節點的數量。我的觀點是,我希望StatusStripLabel每次更新時都會更新一些子節點 - 我將添加或刪除一些已存在的節點。首先,我將代碼放在Public Form
中,但它沒有像我期望的那樣工作。過了一段時間後,我想到了一個真正有效的方法:我將代碼放在了按鈕方法中。但之後,我意識到我需要將它放在第二位,以防刪除節點。所以我的問題是:有什麼可以使它更簡單嗎?如果我的解釋不夠,告訴我,我會盡我所能。StatusStripLabel動態更新
從Public Form
代碼(因爲我想該計數器從beggining工作,而不是之後我就按下按鈕)
childNodeCounter();
toolStripStatusLabel1.Text = "Number of games in database: " + NodeCounter.ToString();
方法:
public void childNodeCounter()
{
NodeCounter = 0;
foreach (TreeNode RootNode in treeView1.Nodes)
{
foreach (TreeNode ChildNode in RootNode.Nodes)
{
NodeCounter++;
}
}
toolStripStatusLabel1.Text = "Number of games in database: " + NodeCounter.ToString();
}
代碼中按鈕的方法:
private void button1_Click(object sender, EventArgs e)
{
NodeCounter = 0;
foreach (TreeNode RootNode in treeView1.Nodes)
{
foreach (TreeNode ChildNode in RootNode.Nodes)
{
NodeCounter++;
}
}
toolStripStatusLabel1.Text = "Number of games in database: " + NodeCounter.ToString();
}
編輯:謝謝先生。漢斯帕桑特我寫了這一點,它工作得很好:
public int childNodeCounter(TreeNodeCollection nodes)
{
int count = 0;
foreach (TreeNode RootNode in nodes)
{
foreach (TreeNode ChildNode in RootNode.Nodes)
count++;
}
return count;
事件處理程序是這樣的:
toolStripStatusLabel1.Text = "Number of games in database: " + childNodeCounter(treeView1.Nodes);
1.「ChildNode.Nodes.GetNodeCount」僅適用於XML,我認爲。 2.我以前有過,但不能像我想的那樣工作,但現在已經修好了。 3.我不保存這個號碼的任何地方,所以每次程序啓動時,都必須重新計算。 – PotatoBox
1. WinForms TreeNode有GetNodeCount()方法。 2.消除冗餘可能不會加速您的程序,但使其更易於理解和維護。 3.我認爲你不明白:當你調用childNodeCounter()時,它會更新狀態標籤。您不必立即更新狀態標籤。 – Curt
1.現在我明白了,你是對的。它看起來有點用處,我將來會實施它。我對此很清楚。我以前沒有解釋清楚 - 在你的評論之後,我把它變成了方法。再次,現在我明白了。感謝您的反饋,當我創建此問題時,我想看到的那種類型的評論。 – PotatoBox