引言

目前工作主要语言是C#,由于没有系统的学习过C#,在工作中可能会遇到一些比较奇葩的问题,在本篇文章中作为记录,后续如果再遇到方便翻阅。

CenterParent属性

Winform子窗体的【StartPosition】属性,设置为【CenterParent】,但是子窗体一直在父窗体的左上角,没有正确显示,通过搜索发现解决方案:

configFrm.StartPosition = FormStartPosition.Manual;
configFrm.Location = new Point(this.Location.X + this.Width / 2 - configFrm.Width / 2, this.Location.Y + this.Height / 2 - configFrm.Height / 2);

以上方案是通过代码计算出位置,能实现效果,但是比较麻烦,细看后发现,我用的是show(),实际上使用ShowDialog()就可以实现,具体原因通过反编译源码发现他们的区别
show()
2024-08-19T08:11:40.png
只是将窗体的Visible = true,并没有其他任何操作或者赋值,所以它并不知道谁是父窗体,所以CenterParent自然就失效了
ShowDialog()
2024-08-19T08:11:56.png
他有两个重载方法,不仅可以得到父窗体信息,还会做一些窗体显示、启用的判断。

最后修改:2024 年 08 月 19 日
如果觉得我的文章对你有用,请随意赞赏