取得IHtmlDocument3 就随心所欲了。
public LabelComponentEditorForm(ComponentEditorLabel designComponent)
{
this.designComponent = designComponent;
int innerLeft = Convert.ToInt32(designComponent.Style["clientX"]);
int innerTop = Convert.ToInt32(designComponent.Style["clientY"]);
IDesignerHost host = (IDesignerHost) designComponent.Site.GetService(typeof (IDesignerHost));
ControlDesigner labelDesigner = (ControlDesigner) host.GetDesigner(designComponent);
object parent = labelDesigner.Behavior.GetAttribute("document", false);
IHTMLDocument2 doc = (IHTMLDocument2) parent;
mshtml.IHTMLWindow3 window = (IHTMLWindow3) doc.parentWindow;
int screenLeft = window.screenLeft;
int screenTop = window.screenTop;
this.Location = new Point(screenLeft + innerLeft, screenTop + innerTop);
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
{
this.designComponent = designComponent;
int innerLeft = Convert.ToInt32(designComponent.Style["clientX"]);
int innerTop = Convert.ToInt32(designComponent.Style["clientY"]);
IDesignerHost host = (IDesignerHost) designComponent.Site.GetService(typeof (IDesignerHost));
ControlDesigner labelDesigner = (ControlDesigner) host.GetDesigner(designComponent);
object parent = labelDesigner.Behavior.GetAttribute("document", false);
IHTMLDocument2 doc = (IHTMLDocument2) parent;
mshtml.IHTMLWindow3 window = (IHTMLWindow3) doc.parentWindow;
int screenLeft = window.screenLeft;
int screenTop = window.screenTop;
this.Location = new Point(screenLeft + innerLeft, screenTop + innerTop);
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
效果如下: