几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(VB.NET/C#)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-21, 11:39 AM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】定义datagridview的button响应事件的问题

定义datagridview的button响应事件的问题
www.dimcax.com
定义datagridview的button响应事件的问题
各位大侠: 为何我在定义以下代码后,触发datagridview的cellclick(单击button)事件后,在autocad中需要先单击下左、右键或回车,然后才能进入选择模式呢? /// /// 响应编辑事件 /// /// private void subentityedit(int roworder) { editor ed = autodesk.autocad.applicationservices.application.documentmanager.mdiactivedocument.editor; database db = hostapplicationservices.workingdatabase; using (transaction trans = db.transactionmanager.starttransaction()) { promptselectionoptions opts = new promptselectionoptions(); opts.messageforadding = "\n选择图元[添加或删除]"; promptselectionresult res1; typedvalue filter1 = new typedvalue(); typedvalue filter2 = new typedvalue(); if (this.dgvmg[0, roworder].value.tostring().length > 0) { for (int i = 0; i < list_all.count; i++) { mydata lst = (mydata)list_all; if (lst.name == this.dgvmg[0, roworder].value.tostring()) { //根据图元属性过滤 dbobject obj = trans.getobject((objectid)lst.objs[0], openmode.forwrite); entity ent = (entity)obj; switch (ent.gettype().tostring()) { case "autodesk.autocad.databaseservices.circle": circle rs = ent as circle; filter1 = new typedvalue(0, "circle"); filter2 = new typedvalue(40, rs.radius); break; case "autodesk.autocad.databaseservices.polyline": polyline ls = ent as polyline; filter1 = new typedvalue(0, "polyline"); filter2 = new typedvalue(6, ls.linetype); break; case "autodesk.autocad.databaseservices.blockreference": blockreference blkref = obj as blockreference; blocktablerecord btrref = (blocktablerecord)trans.getobject(blkref.blocktablerecord, openmode.forread); filter1 = new typedvalue(0, "insert"); filter2 = new typedvalue((int)dxfcode.blockname, btrref.name); break; } break; } } } //过滤筛选! typedvalue[] fillist = new typedvalue[] { filter1, filter2 }; selectionfilter sfil = new selectionfilter(fillist); res1 = ed.getselection(opts, sfil); // 问题就出现在这一步,咋回事呢???????????? //选择不成功就什么都不做 if (res1.status != promptstatus.ok) return; selectionset selset1 = res1.value; objids1 = selset1.getobjectids(); sub_listxdata1(); //----->>>扩展数据查看子程序 if (objids_set.count > 0) { sub_listsort(); //----->>>图元分类子程序 sub_toviewlist(); //----->>>输出至列表子程序 } objids_set.clear(); trans.commit(); } } [
在类里定义下面这个全局函数 [dllimport("user32.dll")] private static extern system.intptr setfocus(system.intptr hwnd); 在那代码前调用 setfocus(application.documentmanager.mdiactivedocument.window.handle); 设置焦点 看行不??
路漫漫其修远兮,吾将上下而求索!
感谢建议!
我尝试了一下,仍未能解决,可能不光是焦点的问题吧?~
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 11:55 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多