C# winform 多个按钮跳转到指定页面,只更换中间的内容,头部和尾部保持不变

在winform中,点击页面中的按钮跳转到指定的页面中的操作非常的简单,但是我们也知道,在大多数的软件中,每个部分的头部和尾巴都是相同的,如果每个页面都要重做的话,将会非常的浪费时间,并且还不一定能够保证能够做到位置完全一样,这样就会用到我们的panel面板控件。首先在我们的首页拖三个panel,给他们分别命名为panel_top,panel_Dock,panel_Bottom,这里的意思是头部,中部和尾部的意思哦,为了方便我们去记忆,位置的话可以找到属性中的Dock进行选择填充。这里用三个按钮分别对应三个页面来显示。如下图:

对应的页面命名跟按钮显示的文字相同哦,按钮的名字我是用btn_加上单词大写的缩写,希望不要看懵了。

新建一个窗体叫Main_Panel,这是一个总的面板,在这个窗体上拖三个panel,一个头部,中部和尾部,命名按照上面的格式来书写。在top和bottom写入自己所需要的东西,最重要的就是中间的面板了。

做好这些以后新建一个窗体叫About_Worldskills,在这个窗体中放入想要显示的内容,我的里面又是三个按钮,看到这里是不是有点被绕晕了,如下图所示

第一个按钮跳转的页面做好之后,我们现在就要开始写重点咯,首先,创建一个类文件,把它封装起来,这里给他命名为SetPanel.cs

在这里写一个方法叫ShowWindows,里面有两个参数,string WindowsName是你想要显示窗口的名字,Panel就是你想要显示在哪个面板上的名字,这里的话,是固定的面板,之前说了建立一个窗体叫Main_Panel,里面分三个面板,所有的头部和尾部相同,所以只要点击按钮,换掉中间的面板即可,所以这里显示的Panel就是中间的面板名字: panel_Dock,这个在之后会提到,我们先看到这句:panel.Controls.Clear();//清空中间面板上的内容,每次进来都会清空一次;使用switch循环,循环这里就不多说了,这里比较的是窗体的名字,所以把窗体的名字传过来之后进入到case中,跳转到对应的页面中,以第一个case为例,首先实例化,也就是new一下就行了,如果有红色波浪线,重构一下using,aw.TopLevel=false;//只有把aw的窗口false掉,才能在panel中存活下来(反正写上去就对了),aw.FormBorderStyle=FormBorderStyle.None;//把窗体的标题全部隐藏掉,因为我们是把一个新的窗体放在面板上,窗体会有标题栏啊最大化最小化之类的,统统隐藏掉,panel.Controls.Add(aw);//把aw这个窗体添加在面板上;这个类就写完了,我们再回到页面上,先到主页面的button的点击事件里。

(new Main_Panel(About Worldskills)).Show();//显示Main_Panel这个窗体,其实就是"Main_Panel mp=new Main_Panel();mp.show();"的一个缩写,为了偷懒,当然也更加的简便啦。然后把主界面隐藏掉,因为是主窗口,是不能直接关闭的哦,关闭会导致整个程序的退出。为什么要隐藏呢?当我们打开软件,点击下一步的时候自然是不希望之前的窗体还显示着,所以要把它隐藏掉哦!

在这里要先定义一个私有名,把按钮传过来的值赋给它,

在load事件中,把名字写上去,用上刚才写的方法就可以啦!

同样的需要把方法拿过来,填上参数,还记得之前讲的两个参数分别是什么意思吗?不记得再回去看看哦,这样就实现了我们想要的效果,因为我也是小白的一部分,刚开始学习,写的不好的地方可以给我留言,或者有更好的建议也可以哦!写的比较详细,这样初学者应该也能看明白!希望可以帮到你们!

原文地址:https://www.cnblogs.com/madan01/p/10476780.html