首页 > 解决方案 > WinForms Close() 事件后 Revit API 外部命令冻结

问题描述

我正在尝试为 Revit 创建一个外部命令,该命令会弹出一个 Windows 窗体,该窗体有一个文本框供用户输入描述。用户单击“确定”后,表单关闭,但 Revit 卡在加载动作中。它不会冻结,它只是不断地加载一些东西。当我暂停调试时,代码只进入 form.ShowDialog() 行。如果我取出 showdialog 并在没有表单的情况下运行它,它运行良好。

我将在下面发布我的相关代码片段。该表单位于其自己的 .cs 中,与外部命令 .cs 分开,但仍位于同一命名空间下。

表单点击事件代码:

private void CancelForm(object sender, EventArgs e)
{
    isReport = false;
    this.DialogResult = DialogResult.Cancel;
    Close();
}

private void SubmitForm(object sender, EventArgs e)
{
    isReport = true;
    reportDesc = descriptionBox.Text;
    this.DialogResult = DialogResult.OK;
    Close();
}

执行命令:

    public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
    {
        //Get application and document objects
        UIApplication uiapp = commandData.Application;
        Document doc = uiapp.ActiveUIDocument.Document;
        ReportForm ticket = new ReportForm();
        ticket.ShowDialog();

代码在 showdialog 之后停止处理。从我可以阅读的内容来看,我认为这可能与表单关闭后关注 Revit 或表单未正确关闭但不知道如何修复它有关。

任何帮助将不胜感激!

标签: c#winformsapirevit

解决方案


我最终重新制作了整个插件,确保我使用 Jeremy Tammik 的 Revit 插件向导来启动它,它开始工作。不完全确定是什么修复了它,但猜测它是设置中的一些错误等。


推荐阅读