首页 > 编程语言 >C#多窗口切换的实现

C#多窗口切换的实现

时间:2024-01-30 11:03:23浏览次数:29  
标签:C# splitContainer1 多窗口 System Forms color Form1 切换 using

新建项目:

开发MainForm:

MainForm先添加1个splitContainer,然后splitContainer.Panel1添加3个按钮,分别是button1,button2,button3
小技巧
这里设置splitContainer的左侧panel1固定大小,
splitContainer1.IsSplitterFixed = false;
// IsSpliterFixed属性设为False
splitContainer1.FixedPanel = FixedPanel.Panel1;
//FixedPannel属性设为Pannel1(要固定的面板的名称)

再右键项目名称添加一个Form1:



Form1设计界面添加2个label控件,分别命名为lbTitle,lbContent;
小技巧
控件设置为文本居中,大小固定;


在Form1的构造函数修改为传入3个参数,分别为Title,Conten和背景色color
Form1的完整代码:

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 多窗口切换的实现
{
    public partial class Form1 : Form
    {
        public Form1(string title,string content ,Color color) {
            InitializeComponent( );
            lbTitle.Text = title;
            lbContent.Text = content;
            this.BackColor = color;

            lbTitle.Font=new Font("仿宋", 20, FontStyle.Regular); //第一个是字体,第二个大小,第三个是样式
            lbContent.Font = new Font("仿宋", 20, FontStyle.Regular); //第一个是字体,第二个大小,第三个是样式
        }
    }
}

MainForm的完整代码:

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 多窗口切换的实现
{
    public partial class MainForm : Form
    {
        //在主窗体初始化3个Form1窗体
        public Form f1;
        public Form f2;
        public Form f3;
        public MainForm( ) {
            InitializeComponent( );
            splitContainer1.IsSplitterFixed = false;
            //            IsSpliterFixed属性设为False
            splitContainer1.FixedPanel = FixedPanel.Panel1;
//FixedPannel属性设为Pannel1(要固定的面板的名称)
        }

        private void MainForm_Load( object sender, EventArgs e ) {
            string title = "窗口一";
            string content = "北国风光,千里冰封。";
            Color color = Color.FromArgb(255, 192, 255); //此方法设置的颜色,其透明度属性alpha=255,完全不透明。 
            f1 = new Form1(title, content,color);
            f1.Dock = System.Windows.Forms.DockStyle.Fill;
            f1.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            f1.TopLevel = false;
            title = "窗口二";
            content = "成吉思汗,只识弯弓射大雕。";
            color = Color.FromArgb(205, 255, 205); //此方法设置的颜色,其透明度属性alpha=255,完全不透明。 
            f2 = new Form1(title, content,color);
            f2.Dock = System.Windows.Forms.DockStyle.Fill;
            f2.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            f2.TopLevel = false;
            title = "窗口三";
            content = "俱往矣,数风流人物还看今朝。";
            color = Color.FromArgb(155, 152, 255); //此方法设置的颜色,其透明度属性alpha=255,完全不透明。 
            f3 = new Form1(title, content,color);
            f3.Dock = System.Windows.Forms.DockStyle.Fill;
            f3.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            f3.TopLevel = false;
//————————————————

//                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY - SA 版权协议,转载请附上原文出处链接和本声明。
                        
//原文链接:https://blog.csdn.net/qq_27474555/article/details/127688352
        }

        private void FromArgb( int v ) {
            throw new NotImplementedException( );
        }

        private void button1_Click( object sender, EventArgs e ) {
            f1.Show( );
            splitContainer1.Panel2.Controls.Clear( );
            splitContainer1.Panel2.Controls.Add(f1);
        }

        private void button2_Click( object sender, EventArgs e ) {
            f2.Show( );
            splitContainer1.Panel2.Controls.Clear( );
            splitContainer1.Panel2.Controls.Add(f2);
        }

        private void button3_Click( object sender, EventArgs e ) {
            f3.Show( );
            splitContainer1.Panel2.Controls.Clear( );
            splitContainer1.Panel2.Controls.Add(f3);
        }
    }
}

小技巧

  • form1在MainForm初始化时变实例化3个窗口,为后续使用;

整个解决方案的结构:

最终实现的效果:

参考文档:
https://blog.csdn.net/qq_27474555/article/details/127688352
https://blog.csdn.net/xieyunc/article/details/89193393
https://blog.csdn.net/wojiuguowei/article/details/110927004

标签:C#,splitContainer1,多窗口,System,Forms,color,Form1,切换,using
From: https://www.cnblogs.com/StephenYoung/p/17996672

相关文章

  • C# 角度转化度分秒
    12.2436°=12°+0.2436x60’=12°+14.616’=12°14‘+0.616x60”=12°14‘+36.96“=12°20'36.96“///<summary>///角度转化度分秒///</summary>///<paramname="angle"></param>///<returns>&l......
  • 从数据库更新模型时出现System.ArgumentException
    尝试从数据库进行更新时,遇到类型未system.argumentexception的异常 来自热心网友的提醒:初看这个问题的时候以为有相同的表、主键啊之类的冲突排除了很久后检查了一下EntitySetMapping发现存在相同的节点呢删除了就ok了检查了一下EntitySetMapping发现存在相同的节......
  • 模拟ASP.NET Core MVC设计与实现
    前几天有人在我的《ASP.NETCore框架揭秘》读者群跟我留言说:“我最近在看ASP.NETCoreMVC的源代码,发现整个系统太复杂,涉及的东西太多,完全找不到方向,你能不能按照《200行代码,7个对象——让你了解ASP.NETCore框架的本质》这篇文章思路剖析一下MVC框架”。对于ASP.NETCoreMVC框......
  • 在K8S中,PV和PVC是如何关联?
    在Kubernetes(简称K8s)中,PersistentVolume(PV)和PersistentVolumeClaim(PVC)是实现存储持久化的关键组件。它们之间的关联是用来动态或静态地将集群的存储资源与用户对存储的需求进行匹配和绑定的过程。PersistentVolume(PV):PV是集群管理员创建和配置的预置存储资源实体,它......
  • [转]JavaScript 判断是否为数字的几种方式
    原文地址:JavaScript判断是否为数字的几种方式_js判断是否是数字-CSDN博客前言1.typeof、instanceof、Number.isInteger2.parseInt、parseFloat3.isNaN、isFinite4.Number.isNaN、Number.isFinite5.正则表达式6.终极方案(推荐)7.结语前言js判断是否为数字的......
  • kettle从入门到精通 第三十六课 kettle carte 集群
    1、carte服务可以单体运行也可以集群方式运行,今天我们一起来学习下carte的集群模式部署和使用。本次示例用一个master和两个slave从节点演示。carte-config-master-8080.xml 配置文件:1<slave_config>2<!--3Documentdescription...45-masters:Youcanlistt......
  • [转]JavaScript 的if()语句和==的判断
    原文地址:JavaScript的if语句和==的判断-系佛-博客园一.if(xx)的判断JavaScript遇到预期为布尔值的地方(比如if语句的条件部分),就会将非布尔值的参数自动转换为布尔值。系统内部会自动调用Boolean函数。1.当if括号里面的表达式为Boolean时,直接判断if(true){conso......
  • 最全的项目部署+持续集成解决方案:Jenkins + git + docker
    最全的项目部署+持续集成解决方案:Jenkins+git+docker:https://blog.csdn.net/m0_45806184/article/details/126408527?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-126408527-blog-128137274.235^v43^control&spm=1001.21......
  • javacore找pk锁阻塞者
    关键字 Flatlockedby3LKMONOBJECTorg/apache/logging/log4j/core/appender/OutputStreamManager@0x000000060FB6B3C0:Flatlockedby"WebContainer:3"(J9VMThread:0x0000000007C55A00),entrycount13LKWAITERQWaitingtoenter:3LKWA......
  • idea配置tomcat利用Build Artifacts打war包
    idea配置tomcat利用BuildArtifacts打war包idea有BuildArtifacts功能,可以一键打war包。这种方式适合没有maven等项目构建的。也就是老项目,把jar包放在lib里面的web项目。本人有幸参与改造公司的老项目。今天给大家分享如何打包!!!一.idea配置tomcat。我想大家都被分配到做这老项......