我有一個c#窗體窗體應用程序,其中我在tabControl的tabPage內有一個treeView,它是主窗體的一部分。單擊鼠標2次鼠標單擊後發生更改
對於樹視圖,我點擊了我想要選擇的treeView的項目,然後根據我選擇的項目進行一些更改。
我正在使用AfterSelect事件進行項目選擇,並使用mouseUp事件來撤消選擇。
項目選擇和取消選擇立即發生,只需點擊一下(沒問題)。其他更改應該基於兩次點擊後發生的選定項目發生!只需在項目節點上或在節點區域外單擊即可不觸發此更改。我必須再次點擊以查看更改。這是有線的。我沒有使用鼠標雙擊事件或類似的東西,我只使用我上面描述的事件。
這怎麼會發生?以及如何解決它?謝謝。
編輯:我使用我自己的多選版本的treeView,我發現(使用調試),當我第一次點擊後得到AfterSelect事件中的樹的選定節點爲零,那麼它是第二次點擊所選節點的數量。在添加了選定節點時,如何在發生這種情況時發生這種情況,並在每次點擊TreeView的重寫OnAfterSelect事件時將其添加到當前selectedNodes列表中?
這裏的樹視圖代碼的一部分:(?)
public List<TreeNode> SelectedNodes
{
get
{
return selectedNodes;
}
set
{
removeSelectionFromNodes();
selectedNodes = value;
selectNodes();
}
}
protected override void OnAfterSelect(TreeViewEventArgs e)
{
base.OnAfterSelect(e);
base.SelectedNode = null;
List<MSTreeNode> nodes = new List<MSTreeNode>();
.
.
.
removeSelectionFromNodes();
selectedNodes.Clear();
selectedNodes.AddRange(nodes);
selectNodes();
}
這是鼠標捕獲,Control.Capture屬性的副作用。描述中發生的事情完全不清楚。發佈一個片段。 – 2012-04-19 22:27:29
已更新我的帖子 – mj1261829 2012-04-19 23:00:13