我有一个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