Revit开发实现在modeless对话框中无法删除构件


在Revit API 论坛里看到了一个人在问,怎样实现在modeless对话框中

禁止删除操作,大概想了一下,可以通过下面3个步骤实现

1.在对话框显示的时候,复写删除命令

2.写一个外部命令来删除1中复写的命令

3.在对话框关闭后调用这个外部事件


下面是关键代码:

            UIApplication uiapp = commandData.Application;
            Window1 myWin = new Window1(uiapp);
            myWin.Show();
            return Result.Succeeded;


    public partial class Window1 : Window
    {
        UIApplication uiapp = null;
             ExEvent myEvent =null;
             ExternalEvent myEventHandler = null;
        public Window1()
        {
            InitializeComponent();
        }
        public Window1(UIApplication uiapp)
        {         
            InitializeComponent();
            AddInCommandBinding binding = uiapp.CreateAddInCommandBinding(RevitCommandId.LookupPostableCommandId(PostableCommand.Delete));
            binding.Executed += Execute;
            this.uiapp = uiapp;
             myEvent = new ExEvent();
             myEventHandler = ExternalEvent.Create(myEvent);
        }
        private void Execute(object sender, Autodesk.Revit.UI.Events.ExecutedEventArgs e)
        {
            MessageBox.Show("窗体关闭之前无法做删除操作!");
        }

        private void Window_Closed(object sender, EventArgs e)
        {
            myEventHandler.Raise();
        }       
    }
    public class ExEvent : IExternalEventHandler
    {
        public void Execute(UIApplication app)
        {
            app.RemoveAddInCommandBinding(RevitCommandId.LookupPostableCommandId(PostableCommand.Delete));   
        }
        public string GetName()
        {
            return "test";
        }
    }


博主会经常更新一些技术文章,请大家多多关注,

源码下载请加qq群480950299



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值