问题的开始是由C#传传看主群里的印醒提出来的下面我来说一下解决方案吧
其实表面上看是很简单的
开始吧现在有两个窗体Form主窗体Form子窗体
而且我相信大部分人都会这样写
在子窗体的Load事件中
这样写
thisStartPosition = FormStartPositionCenterParent;
其实这样写是不对的正确的写法应该是
thisStartPosition = FormStartPositionCenterScreen;
为什么是CenterScreen而不是CenterParent呢?
那是因为我们调用的方法的问题如果你在调用子窗体时是这样写的话
Form f = new Form();
fMdiParent = this;
fShow();
那就得使用CenterScreen而不是CenterParent了因为在Show的时候窗体是Owner页不是Parent
只要使用ShowDialog()方法时使用CenterParent才有效
大家会说这样就行了吗?其实也不行我们的代码不应该写在Load事件中而是在Show方法之前写
正确的写法应该是这样的
Form f = new Form();
fMdiParent = this;
fStartPosition = FormStartPositionCenterScreen;
fShow();
在子窗体中你什么也不需要做
下面是我提供的一个例子是源代码大家如果还是感觉不太清楚的话可以下载例子看一下
一个布局的其实属性
StartPosition属性有如下选项分别含义如下
CenterParent 窗体在其父窗体中居中
CenterScreen 窗体在当前显示窗口中居中其尺寸在窗体大小中指定
Manual 窗体的位置由 Location 属性确定
WindowsDefaultBounds 窗体定位在 Windows 默认位置其边界也由 Windows 默认决定
WindowsDefaultLocation 窗体定位在 Windows 默认位置其尺寸在窗体大小中指定
CenterScreen的意思并不是屏幕居中(是相对的)它是在"当前显示窗口"中居中