gyl 发表于 2010-7-22 00:17:00

[求助][讨论]如何阻止特定命令的执行?

我显示了一个模式对话框,点击对话框上一个按钮之后,用Hide()方法将其隐藏,这时要求只能执行Zoom和Pan命令,不能执行任何其他命令(如Move、Line之类),若执行其他命令,则立即将其终止并将对话框重新显示出来。在CommandWillStart 事件中可以检查到命令的种类,但我不知道<font color="#ff0000">如何取消命令</font>。请问如何才能阻止其他命令的执行?此外,我还想在用户按ESC键之后结束对话框的隐藏状态重新显示出来,<font color="#ff0000">请问如何知道用户按了ESC键</font>?

雪山飞狐_lzh 发表于 2010-7-22 06:47:00

<p><font face="Verdana"><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=75730&amp;star=1#9274">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=75730&amp;star=1#9274</a></font></p>
<p>&nbsp;</p>

gyl 发表于 2010-7-24 22:04:00

<font color="#000000">那怎么知道用户按了ESC键啊?窗体隐藏之后,其键盘事件好像无法触发了。</font>

雪山飞狐_lzh 发表于 2010-7-24 22:26:00

<p><font face="Verdana"><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=76191&amp;star=1#11629">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=76191&amp;star=1#11629</a></font></p>
<p>&nbsp;</p>

gyl 发表于 2010-7-25 01:08:00

<p>感觉这些方法比较复杂,有没有简单的实现办法?只要达到下列目的即可:</p>
<p>在隐藏模式对话框之后只能进行视图操作,按ESC键后重新显示隐藏的模式对话框。</p>

gyl 发表于 2010-7-25 20:45:00

lzh741206发表于2010-7-24 22:26:00static/image/common/back.gifhttp://bbs.mjtd.com/forum.php?mod=viewthread&tid=76191&amp;star=1#11629
&nbsp;


<p>这种方法在AutoCA2008中不能使用,Application没有提供PreTranslateMessage事件。</p>

雪山飞狐_lzh 发表于 2010-7-25 22:28:00

<p>为什么不把窗体隐藏-zoom/pan-窗体显示做在一个命令里?</p>
<p>我记得Utils提供了zoom/pan的功能的?</p>

gyl 发表于 2010-7-26 14:18:00

我的意思是在模式对话框隐藏之后,只能对图形进行浏览(可以随意、任意次数的缩放和平移视图,直到用户看够了为止),但不能对图元进行任何增、删、改的操作,然后按ESC键让隐藏的对话框再显示出来。我不知道在一个命令里面如何实现这些要求。

雪山飞狐_lzh 发表于 2010-7-26 15:59:00

简单的例子,你试下吧

      
      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!");
      }

河伯 发表于 2012-3-20 17:02:12

问题解决了吗?
最好是模式对话框隐藏之后,执行实时zoom,然后返回。这个不知有没有办法做到。
页: [1]
查看完整版本: [求助][讨论]如何阻止特定命令的执行?