关于如何从paletteset面板点击按钮后使图形区获得焦点
本帖最后由 fullwolf 于 2011-8-19 17:07 编辑最近一直有个问题困扰着我,我用vb.net新建了一个paletteset面板,添加了自定义控件,其中包含按钮,按钮的点击事件就是获得一个点。但是每次点击按钮都要点两次图形区域才能开始。
试了好多次,发现第一次点击图形区域是为了获得焦点,第二次才是命令。经查找资料解决了。
1:在按钮事件开始写下代码:
"paletteset.keepfocus=false"
结束时写下:
“paletteset.keepfocus=true”
此方法在2007,2008中调试可用。在2011中无用。其他版本未试过,如无用,可用下一个方法。
2:在2011中,此方法无用,感觉好像2011中的面板比2007的选项多了,估计是焦点绑的太牢了。
只会vb.net,不知在C中如何写以下代码。
在按钮的sub上一行写:
Private Declare Function SetFocus Lib "user32" (ByVal hwnd As System.IntPtr) As System.IntPtr
在按钮的事件中,getpoint之前写(sub的开头写就可以吧,我是在定义了doc后就写了):
SetFocus(Application.DocumentManager.MdiActiveDocument.Window.Handle)
经调试,在2011中有效。希望有人有更好的方法。
本帖最后由 xgr 于 2011-8-20 15:59 编辑 <br /><br /><P>我用的是cad2010+vs2008,查看了很多的帖子,至今都还没有找到解决方法,郁闷啊!</P>
<P>下面C#方法还是没用啊<BR> </P>
<DIV class=blockcode>
<BLOCKQUOTE>class win32Api<BR> {<BR> <BR> private static extern System.IntPtr SetFocus(System.IntPtr hwnd);<BR> public static void SetCadFocus()<BR> {<BR> SetFocus (Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Window.Handle);<BR> Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor.UpdateScreen();<BR> }<BR> }<BR></BLOCKQUOTE></DIV>
<P><BR> </P>
<P>在按钮的Chick事件调用</P>
<P> win32Api.SetCadFocus();</P>
<P> </P>
<P>不知道到底什么原因。</P> 这个真不知道。我用vb的通过了,最好有c的高手来帮帮忙
页:
[1]