C#设置子窗体在主窗体中居中显示解决方案
程序员文章站
2023-12-10 22:37:04
问题的开始是由c#传传看主群里的印醒提出来的,下面我来说一下解决方案吧 其实表面上看是很简单的 开始吧,现在有两个窗体form1主窗体,form2子窗体 而且我相信大部分人...
问题的开始是由c#传传看主群里的印醒提出来的,下面我来说一下解决方案吧
其实表面上看是很简单的
开始吧,现在有两个窗体form1主窗体,form2子窗体
而且我相信大部分人都会这样写
在子窗体的load事件中
这样写
this.startposition = formstartposition.centerparent;
其实这样写是不对的,正确的写法应该是
this.startposition = formstartposition.centerscreen;
为什么是centerscreen而不是centerparent呢?
那是因为我们调用的方法的问题,如果你在调用子窗体时是这样写的话
form2 f2 = new form2();
f2.mdiparent= this;
f2.show();
那就得使用centerscreen而不是centerparent了,因为在show的时候窗体是owner页不是parent
只要使用showdialog()方法时使用centerparent才有效
大家会说这样就行了吗?其实也不行,我们的代码不应该写在load事件中,而是在show方法之前写。
正确的写法应该是这样的
form2 f2 = new form2();
f2.mdiparent= this;
f2.startposition = formstartposition.centerscreen;
f2.show();
在子窗体中你什么也不需要做
再提供一个布局的其实属性
startposition属性有如下选项,分别含义如下:
centerparent 窗体在其父窗体中居中。
centerscreen 窗体在当前显示窗口中居中,其尺寸在窗体大小中指定。
manual 窗体的位置由 location 属性确定。
windowsdefaultbounds 窗体定位在 windows 默认位置,其边界也由 windows 默认决定。
windowsdefaultlocation窗体定位在 windows 默认位置,其尺寸在窗体大小中指定。
centerscreen的意思并不是屏幕居中(是相对的),它是在"当前显示窗口"中居中。
其实表面上看是很简单的
开始吧,现在有两个窗体form1主窗体,form2子窗体
而且我相信大部分人都会这样写
在子窗体的load事件中
这样写
复制代码 代码如下:
this.startposition = formstartposition.centerparent;
其实这样写是不对的,正确的写法应该是
复制代码 代码如下:
this.startposition = formstartposition.centerscreen;
为什么是centerscreen而不是centerparent呢?
那是因为我们调用的方法的问题,如果你在调用子窗体时是这样写的话
复制代码 代码如下:
form2 f2 = new form2();
f2.mdiparent= this;
f2.show();
那就得使用centerscreen而不是centerparent了,因为在show的时候窗体是owner页不是parent
只要使用showdialog()方法时使用centerparent才有效
大家会说这样就行了吗?其实也不行,我们的代码不应该写在load事件中,而是在show方法之前写。
正确的写法应该是这样的
复制代码 代码如下:
form2 f2 = new form2();
f2.mdiparent= this;
f2.startposition = formstartposition.centerscreen;
f2.show();
在子窗体中你什么也不需要做
再提供一个布局的其实属性
startposition属性有如下选项,分别含义如下:
centerparent 窗体在其父窗体中居中。
centerscreen 窗体在当前显示窗口中居中,其尺寸在窗体大小中指定。
manual 窗体的位置由 location 属性确定。
windowsdefaultbounds 窗体定位在 windows 默认位置,其边界也由 windows 默认决定。
windowsdefaultlocation窗体定位在 windows 默认位置,其尺寸在窗体大小中指定。
centerscreen的意思并不是屏幕居中(是相对的),它是在"当前显示窗口"中居中。