在我的应用程序中,我有一组3d对象,它们通过TreeView向用户公开。当用户在TreeView中选择一个项目时,将触发SelectedItemChanged事件,相应的3d对象被设置为选中状态,并在3d渲染窗口中突出显示。这很好。
我遇到的是相反的情况。在代码的一部分中,我以编程方式设置了场景中选定的3d对象。我想在TreeView中反映当前选择的对象,因此我逐项检查直到找到相应的对象。但是一旦找到它,就无法找到一种方法来使项目在不调用SelectedItemChanged的情况下被选中,这不是我想要的。
有没有办法做到这一点?
谢谢!
最佳答案
我认为您想隐藏事件处理程序中的代码?如果是这样,执行此操作的常用方法是使用布尔标志(有时是int计数器):
bool updatingSelected;
void SomeHandler(object sender, EventArgs args) { // or whatever
if(updatingSelected) return;
//...
}
void SomeCode() {
bool oldFlag = updatingSelected;
updatingSelected = true;
try {
// update the selected item
} finally {
updatingSelected = oldFlag;
}
}