首页 > 网站 > 建站经验 > 正文

设置C#子窗体在主窗 体中居中显示

2019-11-02 15:09:18
字体:
来源:转载
供稿:网友

  问题的开始是由C#传传看主群里的印醒提出来的,下面我来说一下解决方案吧

  其实表面上看是很简单的

  开始吧,现在有两个窗体Form1主窗体,Form2子窗体

  而且我相信大部分人都会这样写

  在子窗体的Load事件中

  这样写

  this.StartPosition = FormStartPosition.CenterParent;

  其实这样写是不对的,正确的写法应该是

  this.StartPosition = FormStartPosition.CenterScreen;

  为什么是CenterScreen而不是CenterParent呢?

  那是因为我们调用的方法的问题,如果你在调用子窗体时是这样写的话

  Form2 f2 = new Form2();

  f2.MdiParent = this;

  f2.Show();

  那就得使用Cen

扣扣网名[www.la240.com/html2017/1/18/]
terScreen而不是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的意思并不是屏幕居中(是相对的),它是在"当前显示窗口"中居中。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表