c# - 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 或表单未正确关闭但不知道如何修复它有关。
任何帮助将不胜感激!
解决方案
我最终重新制作了整个插件,确保我使用 Jeremy Tammik 的 Revit 插件向导来启动它,它开始工作。不完全确定是什么修复了它,但猜测它是设置中的一些错误等。
推荐阅读
- postgresql - 在简单的 PostgreSQL 函数返回表中避免“歧义列”
- kubernetes-ingress - 带有 NGINX 入口控制器的 AWS NLB 没有从 EKS 集群返回响应
- reactjs - 为什么这个 ref.measureLayout 给我错误?
- java - 如何在spring boot mongoDB中进行聚合和排序?
- java - 在java中的数组中搜索包含字符串的字符串
- batch-file - 如何在批处理文件中禁用用户输入?
- docusignapi - Docusign - 如何返回签名者状态
- php - PayPal Rest API:如何将卡添加或更新到计费协议 api?
- php - How do I loop a nested array in laravel to get an array based on conditions of key values from that array
- html - 复制到剪贴板,文本区域