前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >C#实现多个子窗体切换效果

C#实现多个子窗体切换效果

作者头像
灰小猿
发布于 2020-09-23 03:13:28
发布于 2020-09-23 03:13:28
4.9K05
代码可运行
举报
运行总次数:5
代码可运行

C#的在主窗体中实现多个子窗体相互切换的效果主要依托于panel容器和Controls函数。

Hello,大家好!我是灰小猿!

今天来和大家分享一下在C#的winform开发中如何实现借助一个主窗体来实现内部多个子窗体的切换效果。

首先来看一下主窗体中多个小窗体切换的效果:

多窗体切换的原理:多窗体切换的原理其实是借助一个panel容器,在该容器中显示相同大小的窗口,

接下来大灰狼和大家分享一下建立多窗口切换的步骤:

1、新建一个主窗体并在其中放置适当的控件,包括进行切换的按钮和显示窗体的panel容器,在这里要注意:将要显示的子窗体就是在该panel容器中显示的,

效果如下:

2、新建用于在主窗体中显示的子窗体,子窗体的新建其实是一个用户控件(Windows窗体),在这里我们可以在状态栏中右击选择—>添加—>用户控件(Windows窗体)

3、设置子窗体的尺寸和panel容器的尺寸相等,目的是为了在panel容器中显示时不会溢出。在这里我们为了便于区分三个不同的子窗体,设置窗体的不同颜色,并在窗体中进行提示。

4、以同样的方式建立子窗体二和子窗体三,

窗体三

5、在主窗体的代码中定义相应的三个窗口变量,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        public UserControl1 f1; //创建用户控件一变量
        public UserControl2 f2; //创建用户控件二变量
        public UserControl3 f3; //创建用户控件三变量

6、在Form1_Load函数中对三个变量进行赋值,也就是对三个对象进行实例化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        private void Form1_Load(object sender, EventArgs e)
        {
            f1 = new UserControl1();    //实例化f1
            f2 = new UserControl2();    //实例化f2
            f3 = new UserControl3();    //实例化f3
        }

7、由于我们的窗体切换是点击相应的按钮触发的,所以我们要为相应的按钮控件设置触发事件。双击主窗体中的按钮进入相应的触发函数,在这里我们要使用如下的代码对相应的子窗体进行显示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        //显示窗体一
        private void button1_Click(object sender, EventArgs e)
        {
            f1.Show();   //将窗体一进行显示
            panel2.Controls.Clear();    //清空原容器上的控件
            panel2.Controls.Add(f1);    //将窗体一加入容器panel2
        }

        //显示窗体二
        private void button2_Click(object sender, EventArgs e)
        {
            f2.Show();   //将窗体二进行显示
            panel2.Controls.Clear();    //清空原容器上的控件
            panel2.Controls.Add(f2);    //将窗体二加入容器panel2
        }

        //显示窗体三
        private void button3_Click(object sender, EventArgs e)
        {
            f3.Show();   //将窗体三进行显示
            panel2.Controls.Clear();    //清空原容器上的控件
            panel2.Controls.Add(f3);    //将窗体三加入容器panel2
        }

8、完成之后运行窗口,点击相应的按钮,在panel2容器中就可以呈现出相应的界面。

最后附上完整源码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace window_cut
{
    public partial class Form1 : Form
    {

        public UserControl1 f1; //创建用户控件一变量
        public UserControl2 f2; //创建用户控件二变量
        public UserControl3 f3; //创建用户控件三变量
        public Form1()
        {
            
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            f1 = new UserControl1();    //实例化f1
            f2 = new UserControl2();    //实例化f2
            f3 = new UserControl3();    //实例化f3
        }

        //显示窗体一
        private void button1_Click(object sender, EventArgs e)
        {
            f1.Show();   //将窗体一进行显示
            panel2.Controls.Clear();    //清空原容器上的控件
            panel2.Controls.Add(f1);    //将窗体一加入容器panel2
        }

        //显示窗体二
        private void button2_Click(object sender, EventArgs e)
        {
            f2.Show();   //将窗体二进行显示
            panel2.Controls.Clear();    //清空原容器上的控件
            panel2.Controls.Add(f2);    //将窗体二加入容器panel2
        }

        //显示窗体三
        private void button3_Click(object sender, EventArgs e)
        {
            f3.Show();   //将窗体三进行显示
            panel2.Controls.Clear();    //清空原容器上的控件
            panel2.Controls.Add(f3);    //将窗体三加入容器panel2
        }
    }
}

觉得不错记得点赞关注哟!

大灰狼陪你一起进步!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C#实现多窗口切换:Panel详细教程(亲测)
德宏大魔王
2023/08/08
1.6K0
C#实现多窗口切换:Panel详细教程(亲测)
C#控件splitContainer用法
在这个例子中,最上方是一个menustrip控件,其下市toolstrip控件,添加为快捷按钮。
全栈程序员站长
2022/09/09
1.3K0
C#控件splitContainer用法
庖丁解牛——深入解析委托和事件
这篇博文我不讲委托和事件的概念,因为大段的文字概念没有任何意义。 具体想了解,委托和事件的概念可以MSDN查阅。 我这篇文章的主题思路是委托如何一步步进化成事件: 何为委托--->委托来实现事件--->用方法对委托的封装--->Event的 add,remove方法的引入--->标准事件写法--->反编译探究竟。 用几个例子以及Reflector反编译探究委托和事件的关系。不足之处,还望多多指教... 何为委托: 首先,委托是一种类型,是一种定义了方法签名的类型。 委托可以理解为函数指针(安全
用户1161731
2018/03/12
1K0
庖丁解牛——深入解析委托和事件
使用panel1,切换页面
UserControl1 urs1_Control; UserControl2 urs2_Control; UserControl3 urs3_Control; UserControl4 urs4_Control; private void Form1_Load(object sender, EventArgs e) { urs1_Control = new UserControl1(); //UserControl1为新建子画面 urs2_Control = new UserControl2(); urs3_Control = new UserControl3(); urs4_Control = new UserControl4();
全栈程序员站长
2022/09/07
7430
C#自定义控件的创建
在编程过程中,现有的c#控件远远不能满足我们的需要,这时候就需要我们自己来开发控件了。本人在开发自定义控件时走了一些弯路,写下此篇,希望能够给有需要的朋友一些帮助,也借此加深自己的印象。
zls365
2020/08/19
1.6K0
C#自定义控件的创建
C#上位机开发(二)—— Hello,World
  上一篇大致了解了一下单片机实际项目开发中上位机开发部分的内容以及VS下载与安装,按照编程惯例,接下来就是“Hello,World!”
vv彭
2020/11/12
2K0
C#上位机开发(二)—— Hello,World
c# 动态生成控件
今天这个主题主要也是群里小伙伴提到的一个问题,就是如何动态的生成控件,他是想自动生成一级二级菜单这样,我这里主要是动态生成的picturebox,希望能给他起到借鉴的作用,然后举一反三完成自己的项目!
zls365
2020/08/19
1.4K0
c# 动态生成控件
c#基于Tablet pc实现的手写输入
需要安装Tablet pc,win7的话 直接在控制面板》程序和应用》添加组建里面勾选上添加
冰封一夏
2019/09/11
1.2K0
事件与委托的区别就是“+=”和“-="?
事件的作用与委托变量一样,只是功能上比委托变量有更多的限制。(比如:1.只能通过+=或 -= 来绑定方法(事件处理程序)2.只能在类内部调用(触发)事件。)
静心物语313
2020/03/24
1.3K0
事件与委托的区别就是“+=”和“-="?
C# 答群友:把窗体应用改成类库输出然后去引用
类库你就新建类库文件直接生成dll去引用好了,但是群友非要骚操作,新建一个windows窗体把他搞成dll去引用,当时我回答了这个问题是可以的,但是实际上我没有这么干过,今天恰好有空,体验了一把,的确可以。
用户9127601
2021/11/01
2710
关于MDI窗体的那些问题
如果Main窗口为MDI窗口,只需要设置属性IsMdiContainer为Ture;弹出来的窗体添加如下代码就可以让子窗口在父窗体中嵌套弹出。
跟着阿笨一起玩NET
2018/09/18
6180
C#-winform基础-事件弹窗
name:在后台要获得前台的控件对象,需要使用name属性 visible:指示一个控件是否可用。 Enabled:指示一个控件是否可用。
用户9857551
2022/06/28
2.1K0
C#-winform基础-事件弹窗
(二十六)c#Winform自定义控件-有确定取消的窗体(二)
GitHub:https://github.com/kwwwvagaa/NetWinformControl
冰封一夏
2019/09/11
1.1K0
(二十六)c#Winform自定义控件-有确定取消的窗体(二)
Wallpaper的原理和C#实现(含源文件)
wallpaper是一款优秀的动态壁纸软件,除了播放动画以外,还可以执行程序,甚至可以实时响应鼠标移动。
DearXuan
2022/01/19
2.4K0
Wallpaper的原理和C#实现(含源文件)
【愚公系列】2023年11月 Winform控件专题 SplitContainer控件详解
Winform控件是Windows Forms中的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、进度条等。开发人员可以使用Winform控件来构建用户界面并响应用户的操作行为,从而创建功能强大的桌面应用程序。
愚公搬代码
2023/11/30
1.6K0
C#控件大小随窗体大小等比例变化
https://www.cnblogs.com/sakalaka/p/5135230.html
iOSDevLog
2019/07/22
3.5K1
C#——写一个控件库
注意:控件的类和部分类(包括窗体生成类/窗体设计类)全部要加public来修饰,不然无法在工具箱里找到
vv彭
2021/02/04
1.9K0
C#——写一个控件库
C#委托+回调详解
今天写不完,明天会接着写的,,,, 学习C#有一段时间了,不过C#的委托+回调才这两天才会用,以前只是知道怎么用.前面的一篇文章,函数指针,其实是为这个做铺垫的,说白了委托就相当于C语言中的函数指针,具体说用委托有什么好处,我也不知道,但是因为你只要学C#那么回调就一定要会,回调是委托的一种.回调多用于线程间....还是用代码一点点的说明吧!现在认为自己以前不会用委托是因为手太懒,再者没有太多的必须用C#做的Demo,自己学东西都是用到什么学什么,想做什么东西需要什么知识就学什么,前几天有了必须要做的C#的
杨奉武
2018/04/17
3.6K0
C#委托+回调详解
visual studio 2012 的制作ActiveX、打包和发布
开发环境是Vs 2012  Framework 4.0 源码和制作工具在文章最下边 一. ActiveX控件Demo 新建一个Window窗体控件库项目 在自动生成的UserControl1页面上添加
lpxxn
2018/01/31
6590
visual studio 2012 的制作ActiveX、打包和发布
winform笔记
FlowLayoutPanel控件不直接支持MouseWheel事件.即滚动滚轮也不会响应.所以必须手动来支持响应滚轮. FlowLayoutPanel控件继承于Panel控件,Panel控件也是直接不支持MouseWheel事件 你可以添加MouseWheel事件,然后写上支持滚动的功能.也可以直接重写该控件.这样可以复用该控件. 如果只支持MouseWheel事件,还是不一定在滚动滚轮的时候,就能引发MouseWheel事件.所以,必须让鼠标停留在控件上时,让控件处于输入焦点状态.这是,滚动滚轮就可以引发MouseWheel事件了.
提莫队长
2019/02/21
1.5K0
相关推荐
C#实现多窗口切换:Panel详细教程(亲测)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验