reecho_cd 发表于 2011-5-8 17:09:49

怎样使c#里定义的命令重复使用,在按esc后退出?

本帖最后由 reecho_cd 于 2011-5-8 17:11 编辑

   我在c#里写了个命令,想让它重复执行,按esc后退出。我写了下面的代码,但是按esc退不出,向各位达人请教一下,应该怎么写呢?谢谢了!(我的开发环境是。net05+cad05)

         public void wdx()
      {
            //获得CAD实例
            Database db = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database;
            Autodesk.AutoCAD.DatabaseServices.TransactionManager tm = db.TransactionManager;      
            AcadApplication acadApp = (AcadApplication)System.Runtime.InteropServices.Marshal.GetActiveObject("AutoCAD.Application");
            AcadDocument docc = acadApp.ActiveDocument;//获得cad当前文档
            AutocadMAP.AcadMap map = (AcadMap)acadApp.GetInterfaceObject("AutoCADMap.Application");
         
            try
            {
               while (true)
                {
                  
                   Transaction trans = tm.StartTransaction();
                  excute(docc,map);//这是自己写的主要执行函数(其实就是想让这个函数重复执行,如果按esc键就退出)
                  trans.Commit();//
                  trans.Dispose();
                }
             }
            catch (Autodesk.AutoCAD.Runtime.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
      }

sieben 发表于 2011-5-8 23:05:54

      
      public static extern short GetKeyState(int nVirtKey);

while (GetKeyState((int)System.Windows.Forms.Keys.Escape) > 0)

pyt5208 发表于 2011-5-10 18:32:36

循环判断            

reecho_cd 发表于 2011-5-11 20:35:18

回复 sieben 的帖子

谢谢!
不过我这里还是不能实现循环,按esc后仍然退不出。我再试试

reecho_cd 发表于 2011-5-11 20:37:13

回复 pyt5208 的帖子

谢谢!
请问是循环判断按键状态吗?
不知道怎么监听自己定义的这个命令的开始结束事件?是否能够在commandcancel事件监听到

quyeming1987 发表于 2011-7-12 17:19:50

用do{}while()循环,退出时让主要的执行函数返回值为false

pyt5208 发表于 2011-7-24 18:13:34

楼上正解`````
页: [1]
查看完整版本: 怎样使c#里定义的命令重复使用,在按esc后退出?