我有使用TreeView的winforms项目。有时当我选择一些项目时,其他项目被选中。我非常确定没有任何代码可以覆盖选择。
https://www.dropbox.com/s/qutmu0tmrkjspc6/disablederrortreeview.rar?dl=0
这是示例项目。我需要更新树视图,因此有计时器可以定期更新其内容(因此每秒取消选择一次项目)但有时候点击速度很快,它会选择不同的项目,我没有点击。
任何人都知道问题可能是什么?是否有任何解决方法/修复方法可以阻止这种情况?
谢谢
的Jakub
答案 0 :(得分:1)
两个行动方案:
您可以:在选择发生时禁用Tick
事件:
bool selecting = false;
private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
selecting = true;
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
selecting = false;
// maybe you want to call the Tick now:
// timer1_Tick(null, null);
}
private void timer1_Tick(object sender, EventArgs e)
{
if (selecting) return;
// do your stuff
..
}
或者,您可以在Tick
正在运行时禁用选择:
bool ticking = false;
TreeNode clickedNode = null;
private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = ticking;
clickedNode = e.Node;
}
private void timer1_Tick(object sender, EventArgs e)
{
ticking = true;
// do your stuff
ticking = false;
// try to select the clicked node
if (clickedNode != null)
{ treeView1.SelectedNode = clickedNode; clickedNode = null;}
}