2016-10-03 87 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; 
     } 

    } 

然後取消固定。