使用ESC退出while循环?
我有一个程序,一旦您在您需要的对话框中建立配置,它就会要求您选择多个点,然后根据您的配置和您选择的点确定正确的块,然后插入块。 它重复插入命令,但不重复对话框,因为在此会话期间配置不会更改。我需要能够按 ESC 键或右键单击鼠标,退出重复点选择并插入例程部分的 while 循环。 此时没有键盘输入,只是根据提示选择点。
如何让我的程序识别已按下 ESC 键或右键单击鼠标,并使用它来退出我的 while 循环?
感谢您的建议。
此处显示的部分代码:
try
{
using (DBSvc.Transaction tr1 = rfmlDB.TransactionManager.StartTransaction())
{
curOsmode = System.Convert.ToInt32(App.GetSystemVariable(“OSMODE”));
curOrtho = System.Convert.ToInt32(App.GetSystemVariable(“ORTHOMODE”));
App.SetSystemVariable(“OSMODE”, 2815);
App.SetSystemVariable(“ORTHOMODE”, 1);
tr1.Commit();
}
Application.EnableVisualStyles();
App.ShowModalDialog(new frmRFML());
cfg = frmRFML.cfgArray;
// GetPoints 并插入块,直到 ESC 或 Enter 选中
,而 (true)
{
GetPointsRFML(cfg.级别);
RFMLKeyCalc(xmHt);(未来)
RFML_BlockName BlockNameRFML = new RFML_BlockName();
BlockInsert GetSupport = new BlockInsert();
bName = BlockNameRFML.BuildBlockName(xmHt, cfg, TGDVer);
GetSupport.InsertBlock(bsPoint, BlockNameRFML.BuildBlockName(xmHt, cfg, TGDVer));
try
{
using (DBSvc.Transaction tr2 = rfmlDB.TransactionManager.StartTransaction())
{
DBSvc.BlockTable blkTable = (DBSvc.BlockTable)tr2.GetObject(rfmlDB.BlockTableId, DBSvc.OpenMode.ForRead) as DBSvc.BlockTable;
if (blkTable.Has(bName))
{
Random rnd = new Random();
整型图章 = rnd。Next();
string nbname = “z_” + bName + System.Convert.ToString(stamp);
var btr = (DBSvc.BlockTableRecord)tr2.GetObject(blkTable, DBSvc.OpenMode.ForWrite);
断续器名称 = nbname;
}
tr2.Commit();
}
}
catch (ArgumentException e)
{
MessageBox.Show(e.Message);
}
App.SetSystemVariable(“OSMODE”, curOsmode);
App.SetSystemVariable(“ORTHOMODE”, curOrtho);
//RFML_XmPositions.UpDateXmPosition(bName, ref xmHeight, ref xmSpread);
}
}
catch (ArgumentException e)
{
MessageBox.Show(e.Message);
}
} }
**** Hidden Message ***** HostApplicationServices。user break
http://help . Autodesk . com/view/OARX/2018/ENU/?guid = OREFNET-Autodesk _ AutoCAD _ database services _ HostApplicationServices _ user break
使您的循环基于此方法的值 感谢您的输入。我已经去了发布的站点,但我正在努力弄清楚如何在我的代码中实现它。
页:
[1]