Выбор элемента TreeView без вызова SelectedItemChanged? - PullRequest
2 голосов
/ 21 мая 2009

В моем приложении у меня есть группа трехмерных объектов, и они отображаются пользователю через TreeView. Когда пользователь выбирает элемент в TreeView, происходит событие SelectedItemChanged, соответствующий 3d-объект выбирается и выделяется в окне 3d-рендеринга. Это отлично работает.

У меня проблемы с обратным. В разделе моего кода я программно устанавливаю выбранный 3d-объект на сцене. Я хочу отразить текущий выбранный объект в TreeView, поэтому я бегу по элементам, пока не найду соответствующий. Но как только я доберусь до него, я не смогу найти способ сделать элемент выделенным без вызова SelectedItemChanged, а это не то, чего я хочу.

Есть ли способ сделать это?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 22 мая 2009

Я так понимаю, вы хотите подавить код в вашем обработчике событий? Если это так, то обычно это делается с помощью логического флага (или иногда счетчика 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;
    }
}
0 голосов
/ 22 мая 2009

Было бы целесообразно временно удалить обработчик событий SelectedItemChanged TreeView и повторно добавить его после выполнения необходимых операций? Я сам не пробовал, но это единственное, о чем я могу подумать (Марк Гравелл опередил меня до моего первоначального ответа - я уже делал ЭТО раньше;)).

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...