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

发布时间:2024年01月23日

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站硬件家园

文章来源:https://blog.csdn.net/weixin_49048045/article/details/135755066
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。