我有 ac# windows 窗体应用程序,其中我在 tabControl 的 tabPage 中有一个 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();
}