老师们,您好,C#开发ORD UP5时遇到一个问题,自定义Toolsetting界面启动后,系统的Toolsetting(例如 选择元素)无法直接点击命令执行,必须将自定义的关掉后再启动才行,这是什么原因呢?
您如果想在您的Toolsetting界面里面进行元素选择等操作的话,可以继承一个DgnElementSetTool类,然后根据需要对元素进行操作。另外,我猜测AttachToToolSettings只能有一个ToolSetting。您试试创建一个非模态对话框,这样应该不会阻止其他窗口的弹出。
您参考下这个wiki:https://communities.bentley.com/communities/other_communities/chinafirst/f/microstation-projectwise/171983/ce-c-addin-demoform-modelless-dialog/495468#495468
老师好,我不是想在我的Toolsetting界面里面进行元素选择等操作,我只是希望我的Toolsetting界面显示时,单击系统自带的Toolsetting(例如 选择元素)命令时,可以直接逼退我的Toolsetting,而不用先关闭我的,再启动系统的。多了一步操作,很麻烦。
没有,里面不涉及到交互,因此没有继承DgnTool,只是觉得ToolSetting窗口比较好,相比于Form,可以实时看到创建的效果。
cao li said:里面不涉及到交互,因此没有继承DgnTool,只是觉得ToolSetting窗口比较好
不涉及到交互的工具,最好不要覆盖ToolSetting窗口。
cao li said:相比于Form,可以实时看到创建的效果
没有理解您这句话。看到创建效果与ToolSetting之间没有关系呀。
一般的Form,在里面创建元素的话,只有关闭窗体才能看到创建的元素,ToolSetting点击创建后关闭窗体前就可以看到。这就是为什么选择ToolSetting的原因。
正常情况下是不会出现这种情况的,除非是可能碰到了新的bug或者是您的代码有问题,您可以在点击创建的的时候在原点处创建一条线看是否创建成功。
cao li said:一般的Form,在里面创建元素的话,只有关闭窗体才能看到创建的元素,ToolSetting点击创建后关闭窗体前就可以看到。
肯定是您代码写得有问题,从原理上来说不应该出现这种情况。创建的元素能否被看到决定于您是否将该元素添加到了模型中(一般是通过调用AddToModel来添加的),或者通过动态在临时显示元素的。
嗯,我检查下代码。回到我最初的问题,我新建一个窗口,集成Adapter,显示时AttachToToolSettings,再Show,然后再点击系统命令(选择命令等工具),有没有办法逼退我现在这个Form。我现在是先关闭form,再点击系统命令,不关闭的话无法启动系统命令。
ToolSettings窗口是用来显示当前交互式工具(交互式工具就是从DgnTool派生下来的工具类)需要用户输入参数时的窗体的,MSTN中同一时间只能有一个交互式工具是激活的,当启动其他工具时,当前这个工具就会被强制退出,其OnCleanup就会被调用,如果交互式工具在ToolSettings窗口显示自己的窗体时,需要在OnCleanup中卸载掉。如果您没有启动一个自己的从DgnTool派生出来的类,而直接去往ToolSettings上挂接自己的窗体,能挂接成功,但显然其他工具启动时,您的程序是没有一个机会获取到其他工具的通知,进而卸载掉自己的窗体的。
Answer Verified By: cao li