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

  问题的开始是由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的意思并不是屏幕居中(是相对的),它是在"当前显示窗口"中居中。

时间: 2024-08-22 15:24:40

设置C#子窗体在主窗体中居中显示的相关文章

在MDI窗体中,如何把最小化的子窗体放在主窗体的状态栏上

问题描述 在MDI窗体中,如何把最小化的子窗体放在主窗体的状态栏上 解决方案 解决方案二:下面的代码只是实现你上面说的要求.如果要求点击状态栏上的按钮,再把窗体show出来,还需要在下面代码的基础上再扩展.主要的思路就是,在父窗体能处理子窗体的最小化事件.//先建一个FormBase的基类,子窗体都从这个基类继承publicclassFormBase:System.Windows.Forms.Form{publicdelegatevoidFormMinSize(objectsender,Even

C#设置子窗体在主窗体中居中显示解决方案_C#教程

问题的开始是由C#传传看主群里的印醒提出来的,下面我来说一下解决方案吧 其实表面上看是很简单的 开始吧,现在有两个窗体Form1主窗体,Form2子窗体 而且我相信大部分人都会这样写 在子窗体的Load事件中 这样写 复制代码 代码如下: this.StartPosition = FormStartPosition.CenterParent; 其实这样写是不对的,正确的写法应该是 复制代码 代码如下: this.StartPosition = FormStartPosition.CenterSc

不同身份登入主窗体,主窗体的控件某些可用某些不可用

问题描述 我是新手,我想要实现的是,用不同的身份登入主窗体,主窗体的控件可用性改变比如说:以"用户"身份登入,主窗体的"会员管理"按钮的visible变为flase如果是以"管理员"身份登入,主窗体的"会员管理"按钮的isible就变为true我是新手,我想要代码,网上找了好久都找不到合适的.各位帮帮忙 解决方案 解决方案二:对不起很难帮到你了.你要的代码取决于你现有的代码.这东西也能到网上找合适的.我真服了你了.解决方案三:

隐藏-登录窗体和主窗体该怎么组织

问题描述 登录窗体和主窗体该怎么组织 可能我我问的有点笼统,我是在做一个登录界面,原本启动窗体是登录窗体,验证后隐藏登录主窗体,隐藏登录窗体,然后这样引发了一些问题,我就想能不能有一种方法,启动窗体设为主窗体,在启动的时候隐藏主窗体,打开登录窗体,验证成功则显示主窗体? 解决方案 引发的问题无非就是结束了消息循环导致程序退出 参考:http://blog.csdn.net/wuyazhe/article/details/5642431 解决方案二: http://blog.csdn.net/ki

变元-c语言如何在子函数读取主函数中的数组

问题描述 c语言如何在子函数读取主函数中的数组 要一次性全部读取这个数组,不需要改变数组. 比如我有个数组a[10].我想一次性在子函数中读取a从1到10的所有字符.如果不通过指针,可以用变元传递嘛 解决方案 你用数组做形参,传过去的实参相当于传指向数组的指针. 解决方案二: 标准C语言,没有你所说的变元的东东.变元,都是后来 C++/C# 才有的. 指针是最方便的,其它不想说了. 解决方案三: c语言就指针了吧!其他的没有指针直接了! 引用,变元都不是c的东西了! 说具体需求吧 解决方案四:

html5-如何让iframe中弹出的div在整个html中居中显示?

问题描述 如何让iframe中弹出的div在整个html中居中显示? html页面右侧加载了一个ifrmame页面(占整个html页面三分之二的大小),执行操作后需要弹出提示信息div,想让提示信息居中显示使用document.body.clientWidth及document.body.clientHeight后只是在iframe下居中,而我想让提示信息div在整个html页面居中显示,请指教,谢谢! 解决方案 你可以前面加上个parent,获取父窗口对象

模式窗体 控制 主窗体

问题描述 主窗体MainForm子窗体Form1在MainForm中有menuStrip1菜单栏ToolStripMenuItem1MainForm中的代码:ToolStripMenuItem1.Visible=false;Form1ss=NewForm1();ss.ShowDialog();Form1中的代码MainFroms=newMainFrom();s.ToolStripMenuItem1.Visible=true;//请问这里如何实现?如何在Form1中点击按钮让主窗体的ToolStr

图片在页面中居中显示

参考1:http://www.lanrentuku.com:8081/js/table-188.html# 参考2:http://www.cnblogs.com/xueming/archive/2012/03/21/VerticalAlign.html http://files.cnblogs.com/files/zfanlong1314/%E5%9B%BE%E7%89%87%E5%9C%A8%E9%A1%B5%E9%9D%A2%E4%B8%AD%E5%B1%85%E4%B8%AD%E6%98%

【求助】,主窗体与子窗体问题激活问题

问题描述 线程和子窗体都是主窗体中定义的我在主窗体中创建了一个线程用来做显示一个子窗体这时主窗体正在加载数据子窗体显示正在加载中,当加载完成之后,自行关闭,并调用dispose销毁了可是这时主窗体自动最小化了,如何激活啊请各位高手作答 解决方案 解决方案二:子窗体this.mdiParent.windowstate=formwindowstate.normol;this.dispose;