我目前正在制作一个小应用程序,它会在超时时自动按下某个按钮。 我正在用 visual studio 的窗口窗体做这个,但项目从 visual studio 左上角的窗体窗口开始。
现在我想让它在视觉本身的中间居中,但我不知道如何居中。
我在谷歌上只能找到如何在应用程序启动/执行时将其居中。但正如我提到的,我只希望它以视觉本身的工作空间为中心。
我希望有人能帮我解决这个奢侈品问题
Gert-Jan
在 Windows 窗体设计器中设计时居中窗体与在运行时居中窗体不同,它们基本上没有任何关系。
在设计器中居中窗体只是让它出现在 VS 设计器中工作区的中间。可以使用以下任一解决方案:
基本技巧是根据设计表面(表单的父级)的大小在设计模式中设置表单的位置:
在下面的示例中,我使用基本表单处理了它,并修改了设计器位置。要创建一个演示该功能的简单项目,请按照以下步骤操作:
创建一个新的 WinForms 项目(.NET Framework),并命名为
FormDesignerExample
.
添加对“System.Design”程序集的引用。 (右键单击,添加引用,在框架程序集中搜索它)。
在项目中添加以下
MyBaseForm
类:
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();
};
}
}
}
打开Form1.cs,从MyBaseForm驱动
public partial class Form1 : MyBaseForm
关闭所有设计器窗体,重建项目。然后在设计模式下打开Form1。
给你。