在.Net Form中加载ActiveX控件非常方便,最符合官方的(也是最简单的)方法就是在VS.Net的Toolbx中加入ActiveX控件,然后便OK。
.Net有个ComVisible属性,要在ActiveX Form中访问.Net Control还是比较方便。然而要加载在ActiveX Form中呢?却无论如何也没有找到一种官方的方法。也许有朋友要说“谁这么变态,要在ActiveX Form中加载.Net Control?”……我们的一个实际的项目便有这样的需求!没办法,还得绞尽脑汁想招……
抛开跨平台的概念,我们知道在Windows下,.Net Control归根结底还是一个系统Window,与其他Window一样,也有Window Handle……对了,有了Window Handle我们不就可以#$%@。马上做实验,果然一切工作良好。不过还有一个问题,有些情况下Window的Handle会改变(比如改变RightToLeft属性),这时.Net Control就会失去Parent(试试我的例子)。但是一般情况下,谁会去改变RightToLeft属性呢,因此我们的方法基本上Work。