2016-10-03 4 views
0

Я отчаянно пытаюсь предотвратить revit от получения команды delete в то время как в немодальной форме (тот, который был отображен с Show(), а не Showdialog()), но я не могу показаться способный остановить его.Предотвратить получение Revit из команды delete в немодальной форме

Моя проблема заключается в том, что моя форма содержит текстовые поля: ее основная функция требует, чтобы пользователь мог перемещаться (панорамировать и масштабировать) в режиме просмотра без необходимости закрывать и открывать форму.

Но как только пользователь нажимает кнопку «Удалить» на любом текстовом поле, revit считает, что пользователь ввел команду удаления в главном окне, что может привести к случайным удалениям.

Обратите внимание, что api запрашивает revitdb на основе выбранных объектов (семейств), и тогда они могут переименовать семейный тип или фамилию, используя текстовое поле и кнопку «применить». Но как только они нажмут кнопку удаления на клавиатуре, угадайте, что - объект удаляется в revit.

Я потратил 10 часов на это, и это может оказаться катастрофическим для моих планов.

ответ

0

Ответьте на мой собственный вопрос: обходным путем является просто «выталкивать» выбранные элементы, когда пользователь нажимает на текстовое поле.

 private void textBox3_MouseClick(object sender, MouseEventArgs e) 
    { 
     //find selected items 

     Selection sel = uidoc.Selection; 
     ICollection<ElementId> ids = sel.GetElementIds(); 

     foreach (ElementId id in ids) 
     { 
      Element el = doc.GetElement(id); 
      el.Pinned = true; 
     } 

    } 

Затем открепить, когда пользователь покидает поле (неудовлетворительный ANDW.

 Смежные вопросы

  • Нет связанных вопросов^_^