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

 更新时间:2023年07月12日 14:22:19   作者:灰小猿  
这篇文章主要介绍了C#之如何实现多个子窗体切换的效果,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

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

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

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

多窗体切换的原理

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

建立多窗口切换的步骤

1.新建一个主窗体并在其中放置适当的控件

包括进行切换的按钮和显示窗体的panel容器,在这里要注意:将要显示的子窗体就是在该panel容器中显示的,

效果如下:

2.新建用于在主窗体中显示的子窗体

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

3.设置子窗体的尺寸和panel容器的尺寸相等

目的是为了在panel容器中显示时不会溢出。

在这里我们为了便于区分三个不同的子窗体,设置窗体的不同颜色,并在窗体中进行提示。

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

窗体三

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

        public UserControl1 f1; //创建用户控件一变量
        public UserControl2 f2; //创建用户控件二变量
        public UserControl3 f3; //创建用户控件三变量

6.在Form1_Load函数中对三个变量进行赋值

也就是对三个对象进行实例化

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

7.由于我们的窗体切换是点击相应的按钮触发的

所以我们要为相应的按钮控件设置触发事件。

双击主窗体中的按钮进入相应的触发函数,在这里我们要使用如下的代码对相应的子窗体进行显示:

        //显示窗体一
        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容器中就可以呈现出相应的界面。

最后附上完整源码

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
        }
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 分析C# Dictionary的实现原理

    分析C# Dictionary的实现原理

    对于C#中的Dictionary类相信大家都不陌生,这是一个Collection(集合)类型,可以通过Key/Value(键值对的形式来存放数据;该类最大的优点就是它查找元素的时间复杂度接近O(1)。那么什么样的设计能使得Dictionary类实现O(1)的时间复杂度呢
    2021-06-06
  • C#使用Word中的内置对话框实例

    C#使用Word中的内置对话框实例

    这篇文章主要介绍了C#使用Word中的内置对话框实例,包括了对话框的显示方法及后期绑定具体用法,需要的朋友可以参考下
    2014-10-10
  • C#泛型集合Dictionary<K,V>的使用方法

    C#泛型集合Dictionary<K,V>的使用方法

    这篇文章主要介绍了C#泛型集合Dictionary<K,V>的使用方法,本文讲解了Dictionary的多种操作方法,需要的朋友可以参考下
    2014-10-10
  • C#调用Rar文件及获取Rar返回值的方法

    C#调用Rar文件及获取Rar返回值的方法

    这篇文章主要介绍了C#调用Rar文件及获取Rar返回值的方法,实例分析了C#调用rar文件实现文件的压缩与解压相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • C#中如何使用redis

    C#中如何使用redis

    这篇文章主要介绍了C#中如何使用redis,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • C#泛型类创建与使用的方法

    C#泛型类创建与使用的方法

    这篇文章主要为大家详细介绍了C#泛型类创建与使用的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • C#正则表达式大全

    C#正则表达式大全

    本文详细讲解了C#正则表达式的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 一文带你了解C#中的协变与逆变

    一文带你了解C#中的协变与逆变

    这篇文章介绍了C#中协变和逆变的相关知识,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • Unity UGUI的GraphicRaycaster射线投射组件介绍使用

    Unity UGUI的GraphicRaycaster射线投射组件介绍使用

    这篇文章主要为大家介绍了Unity UGUI的GraphicRaycaster射线投射组件介绍使用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • 在C#中调用Python代码的两种实现方式

    在C#中调用Python代码的两种实现方式

    这篇文章主要介绍了在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03

最新评论