再发一贴,求用IDesignerHost 对象制作窗体设计器控件的方法
本人想做一个窗体设计器控件,实现类似于VS.Net的窗体设计功能,主要是能够添加Label TextBox Combobox Checkbox gridControl等控件,并调整大小、拖动控件位置、设计水平对齐、垂直对齐、水平间距、垂直间距等布局功能
主要是用IDesignerHost接口和DesignSurface对象实现,该接口支持在设计器中进行控件拖动、调整大小,但是没有找到响应事件的方法,比如当前选择控件改变事件、MouseDown事件,不能获取当前选择了哪些控件,以至于不能实现在窗体中拖动鼠标绘制控件、修改当前选中控件的对齐方式、水平间距、垂直间距等功能
DesignSurface surface = new DesignSurface();
surface.BeginLoad(typeof(frmDesignHost));
Control designView = surface.View as Control;
designView.Parent = this.pnlTable ;
designView.Dock = DockStyle.Fill;
designView.BackColor = Color.White;
IDesignerHost host = (IDesignerHost)surface.GetService(typeof(IDesignerHost));
Control root = (Control)host.RootComponent;
//似乎没有 效果,不会触发事件
designView.MouseDown += new MouseEventHandler(designView_MouseDown);
designView.MouseMove += new MouseEventHandler(designView_MouseMove);
designView.MouseUp += new MouseEventHandler(designView_MouseUp);