我試圖實際上取消選擇我的TreeView中的所有節點。通過「實際」,我的意思是TreeView1.SelectedNode = null;
實際上會取消選擇樹中的節點。實際上取消選擇TreeView中的所有節點(.NET)
從目視上看,節點被取消選擇。但是,當我嘗試添加新節點時,樹視圖會自動選擇樹中的第一個節點(位於頂部),並在理想情況下創建父節點時創建子節點。我不能在添加之前取消選擇所選節點,因爲用戶可能想要添加一個子節點。我想要添加的父/子節點的行爲將基於在樹視圖中選擇的內容。如果未選擇任何內容,請添加父項,如果選擇了某項內容,請在該選定節點中添加一個子項。
我構造一個名爲node
一個TreeNode
對象與圖像和文本的功能和所有的話,我有以下幾點:
if (tvContent.SelectedNode == null)
tvContent.Nodes.Add(node);
else
{
tvContent.SelectedNode.Nodes.Add(node);
tvContent.SelectedNode.Expand();
}
我有一個「全部取消」,即應該使上面的代碼鍵工作。該按鈕的代碼很簡單:
tvContent.SelectedNode = null;
請原諒我的C#和VB.NET標記。我對兩個人都很好,所以如果有人能用任何一種語言來幫助我,那就太棒了!
感謝
編輯: 有趣。看起來,在測試選定節點是否爲空時,.NET會自動將所選節點設置爲樹中的第一個節點。以下代碼顯示「觸發器」消息框,但在if
語句完成後立即選擇樹中的第一個節點。
private void btnDeselectAll_Click(object sender, EventArgs e)
{
tvContent.SelectedNode = null;
if (tvContent.SelectedNode == null) MessageBox.Show("trigger");
}
編輯2:問題在於使用InputBox作爲節點的標題輸入。無論出於何種原因,這會更改樹視圖的選定節點。我在股票項目中嘗試了這一點,並設法複製這個問題。我想這沒有修復:S
放在tvContent.SelectedNode塊,F11(分步調試)斷點權之後,看看你的代碼的行改變了tvContent.SelectedNode到第一節點。 – Martheen
沒有找到任何改變它的代碼,它真的看起來像它自己改變。 – KingDan
@Martheen請查看我的帖子編輯。看起來這是奇怪的行爲.net – KingDan