[求助][讨论]如何阻止特定命令的执行?
我显示了一个模式对话框,点击对话框上一个按钮之后,用Hide()方法将其隐藏,这时要求只能执行Zoom和Pan命令,不能执行任何其他命令(如Move、Line之类),若执行其他命令,则立即将其终止并将对话框重新显示出来。在CommandWillStart 事件中可以检查到命令的种类,但我不知道<font color="#ff0000">如何取消命令</font>。请问如何才能阻止其他命令的执行?此外,我还想在用户按ESC键之后结束对话框的隐藏状态重新显示出来,<font color="#ff0000">请问如何知道用户按了ESC键</font>? <p><font face="Verdana"><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=75730&star=1#9274">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=75730&star=1#9274</a></font></p><p> </p> <font color="#000000">那怎么知道用户按了ESC键啊?窗体隐藏之后,其键盘事件好像无法触发了。</font> <p><font face="Verdana"><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=76191&star=1#11629">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=76191&star=1#11629</a></font></p>
<p> </p> <p>感觉这些方法比较复杂,有没有简单的实现办法?只要达到下列目的即可:</p>
<p>在隐藏模式对话框之后只能进行视图操作,按ESC键后重新显示隐藏的模式对话框。</p> lzh741206发表于2010-7-24 22:26:00static/image/common/back.gifhttp://bbs.mjtd.com/forum.php?mod=viewthread&tid=76191&star=1#11629
<p>这种方法在AutoCA2008中不能使用,Application没有提供PreTranslateMessage事件。</p> <p>为什么不把窗体隐藏-zoom/pan-窗体显示做在一个命令里?</p>
<p>我记得Utils提供了zoom/pan的功能的?</p> 我的意思是在模式对话框隐藏之后,只能对图形进行浏览(可以随意、任意次数的缩放和平移视图,直到用户看够了为止),但不能对图元进行任何增、删、改的操作,然后按ESC键让隐藏的对话框再显示出来。我不知道在一个命令里面如何实现这些要求。 简单的例子,你试下吧
public static void test25()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
Application.ShowAlertDialog("hello!");
PromptKeywordOptions opts = new PromptKeywordOptions("请检查图形[结束(End)]", "E");
PromptResult res = ed.GetKeywords(opts);
while (res.Status != PromptStatus.OK && res.Status != PromptStatus.Cancel)
{
res = ed.GetKeywords(opts);
}
Application.ShowAlertDialog("End!");
}
问题解决了吗?
最好是模式对话框隐藏之后,执行实时zoom,然后返回。这个不知有没有办法做到。
页:
[1]