2016-10-03 30 views
0

我拼命尝试阻止在无模式形式(使用Show()而不是Showdialog()显示的那个)接收删除命令,但我似乎无法成为能够阻止它。防止Revit以非模态形式接收删除命令

我的问题是我的表单包含文本框:其核心功能要求用户能够在revit中导航(平移和缩放),而无需关闭并重新打开表单。

但是,只要用户按任何文本框文本删除revit认为用户在主窗口中输入了删除命令,这可能会导致意外删除。

请注意,api会根据选定的实体(家庭)查询revitdb,然后可以使用文本框和“应用”按钮重命名家庭类型或家庭名称。但是一旦他们点击了键盘上的删除按钮,就会猜测 - 该实体在revit中被删除。

我在这上面花了10个小时,对我的计划来说可能是灾难性的。

回答

0

回答我自己的问题:解决方法是只在用户单击文本框时“固定”所选元素。当用户离开现场(不满意ANDW

 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; 
     } 

    } 

然后取消固定。