C#实现在Form1的SplitContainer控件中Form2的按钮打开Form3

C#实现在Form1的SplitContainer控件中Form2的按钮打开Form3

问题描述

C#实现在Form1的SplitContainer控件中Form2的按钮打开Form3,Form2和Form3都在Form1的SplitContainer中。Form1的SplitConTainer控件做为Form2和Form3的父窗体,并且用MDI窗口实现。

解决方法

新建Form解决方案,命名为WindowsFormsAPP1。新建Form1、Form2和Form3备用;
在Form1中添加Splitcontainer控件;
在这里插入图片描述

在Form2中添加按钮控件;
在Form3中添加按钮控件;
双击Form1标题栏进入Form1后台程序。在Form1_Load事件中添加程序。

	public static Form1 sform1;
        private void Form1_Load(object sender, EventArgs e)
        {
           sform1 = this;
            this.IsMdiContainer = true;//设置Form1是父窗体
            Form2 fm2 = new Form2();//实例化Form2窗体
            fm2.MdiParent = this;//设置窗体的父子关系
            fm2.Parent = splitContainer1.Panel2;//子窗体的容器是父窗体的Panel2
            fm2.TopLevel = false;//必须关闭,否则冲突
            this.splitContainer1.Panel2.Controls.Add(fm2);//将Form2添加到Panel中
            fm2.Show();
            //fm2.Focus();//获得焦点
            fm2.BringToFront();
        }

在Form1的类中创建一个静态的Form1 实例。不然在Form2中找不到父窗体;
在Form1程序中添加一个打开Form3的函数,和打开Form2的程序几乎相同;

public void OpenForm3()
        {
            Form3 fm3 = new Form3();
            fm3.MdiParent = this;
            fm3.Parent = splitContainer1.Panel2;
            fm3.TopLevel = false;
            this.splitContainer1.Panel2.Controls.Add(fm3);
            fm3.Show();
            fm3.BringToFront();
        }

在Form2的按钮事件中编写:

private void button1_Click(object sender, EventArgs e)
        {
            Form1.sform1.OpenForm3();
        }

这样就可以在Form1的SplitContiner中的Form2打开Form3窗体。
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值