乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 68|回复: 3

代码锁定TEXTSCR

[复制链接]

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2018-7-27 15:43:50 | 显示全部楼层 |阅读模式
我有一小段代码,它从当前文档中选择并过滤块引用。这本身并不显著,但是,所发生的是,在选择之后,如果用户打开TEXTSCR,则该窗口不可访问,就好像它不是最顶层的窗口一样。尝试在窗口中单击会发出默认的蜂鸣声,我已经注释掉了代码的实际选择部分,并验证了这就是问题的根源。代码是问题:   使用doc,LockDocument()。
使用acTrans作为Transaction = db,transaction manager . start transaction 。
While _ currentBlockReference为空。
'删除下一行可停止问题的发生。
Dim SSet As PromptSelectionResult = ed,GetSelection(pso,IntvolFilter)。
If (SSet,Status = PromptStatus,好)然后。
对于SSet中作为SelectedObject的每个selObj,值。
Dim作为Entity = DirectCast(acTrans,GetObject(selObj,ObjectId,OpenMode。ForRead)、Entity)。
如果发送的类型是块引用,则。
_ currentBlockReference = direct cast(sent,BlockReference)。
结束If。
下一步。
ElseIf (SSet,Status = PromptStatus,错误)然后。
ed,write message(vbCrLf & my . resources . _ mustbeiintersection)。
ElseIf (SSet,状态提示状态,好)然后。
退出同时。
结束If。
结束时间。
如果_currentBlockReference为Nothing = False,则。
me . txt current . text = getdataflomintvol(_ current block reference,acTrans)。
me . txt proposed . text = getdataflomintvol(_ currentBlockReference,acTrans,cbxConvertTo。SelectedIndex)。
结束If。
acTrans,Commit()。
结束使用。
End Using    显然,我不能只删除一行,但是我对代码进行了轻微的编辑,以防止选择,这样就没有问题了。也许这很简单,但我就是看不出来。。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2018-7-27 19:59:25 | 显示全部楼层
你好,Keith,为了更清楚地理解,我对你的代码进行了一点重构,如果你只想获得第一个块引用数据,你可以在for each中放一个出口。希望这有所帮助,干杯。注意:未经测试!使用doc,LockDocument()。
使用acTrans作为Transaction = db,transaction manager . start transaction 。
'不需要while循环,我认为它会使事情有点混乱...。
Dim SSet As PromptSelectionResult = ed,GetSelection(pso,IntvolFilter)。
If (SSet,Status = PromptStatus,好)然后。
对于SSet中作为SelectedObject的每个selObj,值。
Dim作为Entity = DirectCast(acTrans,GetObject(selObj,ObjectId,OpenMode。ForRead)、Entity)。
如果发送的类型是块引用,则。
_ currentBlockReference = direct cast(sent,BlockReference)。
“我们有块,还不如在这里搞定呢,。
注意:这些变量将在每次迭代中被重置!!。
如果_currentBlockReference为Nothing = False,则。
me . txt current . text = getdataflomintvol(_ current block reference,acTrans)。
me . txt proposed . text = getdataflomintvol(_ currentBlockReference,acTrans,cbxConvertTo。SelectedIndex)。
结束If。
结束If。
下一步。
ElseIf (SSet,Status = PromptStatus,错误)然后。
ed,write message(vbCrLf & my . resources . _ mustbeiintersection)。
ElseIf (SSet,状态提示状态,好)然后。
退出同时。
结束If。
acTrans,Commit()。
结束使用。
结束使用。

回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2018-7-27 22:34:42 | 显示全部楼层
感谢您的输入。
我可能会将代码从GetSelect转换为GetEntity,因为我只需要一个项目...这会让它变得更简单...也许它还会解决TEXTSCR在运行代码后变得无响应的潜在问题。
这是目前真正的问题...当我注释掉GetSelect部分时,一切都很好。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2018-7-27 23:37:22 | 显示全部楼层
我可能是偶然发现的。…(交叉手指)
我注意到,当我从主窗体调用子窗体时,问题经常发生,但并不总是发生,只能通过关闭AutoCAD并重新打开来解决,然而,当我通过命令方法打开子窗体时,这个问题从来没有发生过…唯一的区别是:
有问题
<div>将myform设置为新的子窗体</div>
myform.ShowDialog()
<div>工作正常</div<<div>将myform设置为新的子窗体</div>
应用程序。ShowModelDialog(myform)
今晚我在某个地方读到,使用ShowDialog对AutoCAD有问题,ShowModalDialog是一种安全的方法…正如我所说,我偶然发现了这一点…
现在我必须返回并更改该项目中的每个实例,以将回调保持在最低限度。快速检查表明该项目中有大约70个实例我有一些工作要做!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 10:33 , Processed in 0.259429 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表