C#winform上位机开发学习笔记9-串口助手的多窗体功能添加

本文详细介绍了如何在WindowsForm应用程序中创建子窗体,包括子窗体的调用操作、显示位置设置,以及如何随主窗体移动。通过代码示例展示了如何控制子窗体的显示、隐藏和位置同步。
摘要由CSDN通过智能技术生成

1.功能描述

涉及子窗体的创建过程,子窗体的调用操作,子窗体与主窗体的显示位置设置,子窗体随主窗体移动

2.代码部分

步骤1:新建button并修改Text

步骤2:在现工程中新建项目

步骤3:选择窗体修改窗体名称

步骤4:创建好新窗体

步骤5:定义新窗体私有变量,通过类声明一个变量

        //定义子窗体变量,供主窗体使用
        private static WaveForm WaveForm;

步骤6:编辑波形显示按钮事件

实现功能1:点击按钮弹出子窗体,关闭子窗体,再次点击则再次弹出窗体,窗体存在时无法通过点击按钮显示更多相同子窗体

//第一次创建WaveForm实体
            if (WaveForm == null)
            {
                //创建新窗体
                WaveForm = new WaveForm();
            }
            else
            {
                //多次创建通过判断IsDisposed确定窗口是否已经关闭,避免同窗口多开
                if (WaveForm.IsDisposed == true)//判断该控件有无释放,若释放则重新创建窗体
                {
                    //如果窗体已经关闭,需要重新创新
                    WaveForm = new WaveForm();
                }
            }
            //新建窗体
            //WaveForm = new WaveForm();//发现不用if语句判断直接创建窗体也能实现一样的功能
            //窗体展示
            WaveForm.Show();

实现功能2:子窗体紧靠主窗体位置显示

            //设置波形窗体紧靠主窗体
            this.Left = 0;//主窗体左边的坐标为0
            WaveForm.Location = this.Location;//主窗体坐标赋给子窗体
            WaveForm.Left = this.Right;//主窗体的右显示坐标赋给子窗体左显示坐标

实现功能3:主窗体位置改变事件,子窗体随主窗体位置移动

//主窗体位置改变事件
        private void Form1_LocationChanged(object sender, EventArgs e)
        {
            //如果子窗体打开
            if (WaveForm != null)
            {
                WaveForm.Location = this.Location;//主窗体坐标赋给子窗体
                WaveForm.Left = this.Right;//主窗体的右显示坐标赋给子窗体左显示坐标
            }
        }

3.完整代码

        //定义子窗体变量,供主窗体使用
        private static WaveForm WaveForm;
//波形显示按钮事件
        private void button30_Click(object sender, EventArgs e)
        {
            //第一次创建WaveForm实体
            if (WaveForm == null)
            {
                //创建新窗体
                WaveForm = new WaveForm();
            }
            else
            {
                //多次创建通过判断IsDisposed确定窗口是否已经关闭,避免同窗口多开
                if (WaveForm.IsDisposed == true)//判断该控件有无释放,若释放则重新创建窗体
                {
                    //如果窗体已经关闭,需要重新创新
                    WaveForm = new WaveForm();
                }
            }
            //新建窗体
            //WaveForm = new WaveForm();//发现不用if语句判断直接创建窗体也能实现一样的功能
            //窗体展示
            WaveForm.Show();

            //设置波形窗体紧靠主窗体
            this.Left = 0;//主窗体左边的坐标为0
            WaveForm.Location = this.Location;//主窗体坐标赋给子窗体
            WaveForm.Left = this.Right;//主窗体的右显示坐标赋给子窗体左显示坐标
        }
//主窗体位置改变事件-主窗体随子窗体移动
        private void Form1_LocationChanged(object sender, EventArgs e)
        {
            //如果子窗体打开
            if (WaveForm != null)
            {
                WaveForm.Location = this.Location;//主窗体坐标赋给子窗体
                WaveForm.Left = this.Right;//主窗体的右显示坐标赋给子窗体左显示坐标
            }
        }

4.测试结果

点击波形显示按钮,弹出波形显示子窗体,且按照预设位置进行窗体展示,子窗体随主窗体移动,功能添加成功,

参考自B站硬件家园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值