关于如何从paletteset面板点击按钮后使图形区获得焦点
最近一直有个问题困扰着我,我用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中有效。希望有人有更好的方法。
我用的是cad2010+vs2008,查看了很多的帖子,至今都还没有找到解决方法,郁闷啊!
下面C#方法还是没用啊
class win32Api
{
private static extern System.IntPtr SetFocus(System.IntPtr hwnd);
public static void SetCadFocus()
{
SetFocus(Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Window.Handle);
Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor.UpdateScreen();
}
}
在按钮的Chick事件调用
win32Api.SetCadFocus();
不知道到底什么原因。
这个真不知道。我用vb的通过了,最好有c的高手来帮帮忙
页:
[1]