WinForm初学者遇到的坑(一)——pige顺序

前言

        虽然知道pige界面顺序会导致遮挡的情况出现,故在设计的时候就将一个界面做好了,某一次在运行后发现界面层次发生了变化导致遮挡,但是之前是正常的,不知道做了什么导致顺序变化(至今是个谜)当时改了很久,无论是直接修改生成的界面设计代码,依然没有效果。

正文

一、pige添加顺序

        我们通过vs设计器直接拖入的pige是由顺序的,先拖入的在最上层,所以在设计时一步一步来设计,我的界面一般是上中下上pige,我就先top,在bottom最后才是fill。按照我个人的理解界面代码的生成顺序应该是我添加的顺序,依次生成,但是恰恰相反,pige自动生成的代码时跟我添加的顺序相反。

        让我怀疑是不是我理解有问题,最后我通过不断调整文档大纲才明白这个顺序是界面的依次生成(可以理解为栈的添加顺序),首先我们按照顺序不断通过设计器不断添加pige,这些pige不断入栈,最后生成时又不断出栈,最后才是我们看到的界面。在生成界面时是不断添加父界面最后将这些界面再添加到Form中,渲染出来的结果才是我们看到的界面。

二、四层pige生成示例

        我的添加界面顺序是这样的:

        文档大纲是这样的:

文档大纲的顺序就是生成时的添加顺序:

// 
// MainForm
// 
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(1155, 584);
this.Controls.Add(this.upanel_main);
this.Controls.Add(this.upanel_top);
this.Controls.Add(this.upanel_right);
this.Controls.Add(this.upanel_botton);
this.Name = "MainForm";
this.Text = "主界面";
this.ZoomScaleRect = new System.Drawing.Rectangle(19, 19, 800, 450);
this.ResumeLayout(false);

尾言

        当时出现界面顺序错误,手动改了.cs代码没有效果,很不符合我的理解(也许只是改了add方法的顺序是不完整的,在之后才发现文档大纲这个东西 #狗头 ),希望各位大佬可以指出原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值