using System.ComponentModel.Design;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design.Behavior;
namespace FormDesignerExample
{
public class MyBaseForm : Form
{
protected override void CreateHandle()
{
base.CreateHandle();
if (Site == null)
return;
var host = (IDesignerHost)this.Site.GetService(typeof(IDesignerHost));
var rootDesigner = (IRootDesigner)host.GetDesigner(host.RootComponent);
var rootComponent = (Control)rootDesigner.Component;
var designSurface = rootComponent.Parent;
rootComponent.Layout += (sender, e) =>
{
var left = (designSurface.Width - rootComponent.Width) / 2;
var top = (designSurface.Height - rootComponent.Height) / 2;
rootComponent.Location = new Point(left, top);
};
designSurface.SizeChanged += (sender, e) =>
{
var left = (designSurface.Width - rootComponent.Width) / 2;
var top = (designSurface.Height - rootComponent.Height) / 2;
rootComponent.Location = new Point(left, top);
var bhSvc = (BehaviorService)host
.GetService(typeof(BehaviorService));
bhSvc.SyncSelection();
};
}
}
}
1条答案
按热度按时间x7yiwoj41#
在Windows窗体设计器中,在设计时使窗体居中与在运行时使窗体居中不同,它们基本上彼此没有任何关系。
在设计器中居中窗体只是使它出现在VS设计器中工作区的中间。可以使用以下两种方法之一:
基本技巧是根据设计图面(窗体的父级)的大小在设计模式下设置窗体的位置:
在下面的示例中,我使用基窗体并修改设计器位置来处理它。若要创建一个简单的项目来演示该功能,请按照下列步骤操作:
1.创建一个新的WinForms项目(.NET框架),并将其命名为
FormDesignerExample
。1.添加对“System.Design”程序集的引用。(右键单击,添加引用,在框架程序集中搜索它)。
1.将以下
MyBaseForm
类添加到项目中:1.打开Form1.cs并从MyBaseForm驱动
1.关闭所有设计器窗体,重新生成项目。然后在设计模式下打开Form1。
给你。