从0自学C#06–多窗体共用对象

上一篇介绍了通过委托事件的方式,实现了子窗体调用父窗体的控件。本文将用参数传递的方式,实现共用一个实体对象。

本文所用的代码,也是在上一篇基础上做修改。

1.父窗体

将共用实体对象innoBERT作为子窗体构造函数的参数。代码如下“修改此行”部分。

if (subFormPPGTx[i] == null || subFormPPGTx[i].IsDisposed)                    {                        subFormPPGTx[i] = new SubFormPPG(innoBERT, i);//修改此行                        subFormPPGTx[i].Text = formTitle;                        subFormPPGTx[i].Name = formName;                        //subFormPPGTx[i].Tag = i;                        subFormPPGTx[i].SendToParent += new SubFormPPG.SendFun(RecvInfo);                        subFormPPGTx[i].Show(this);                    }                    else                    {                        subFormPPGTx[i].WindowState = FormWindowState.Normal;                        subFormPPGTx[i].Activate();                    }

2.子窗体

首先定义一个类字段,然后修改子窗体的构造函数,添加参数,用于接收父窗体传递的实体对象。这样就可以在子窗体里,调用实体对象innoBERT。

InnolightBERT innolightBERT;bool formStatus = false;private int ID;public delegate void SendFun(int number);public event SendFun SendToParent;public SubFormPPG(InnolightBERT innoBERT, int ID){    InitializeComponent();    this.innolightBERT = innoBERT;//接收对象    this.ID = ID;}

3.应用

子窗体调用共用实体对象的属性。

private void SubFormPPG_Load(object sender, EventArgs e){    this.GetPPGSetting(this.ID);}private void GetPPGSetting(int channel){    try    {        switch (channel)        {            case 0:                this.comboBoxSwing.SelectedIndex = (int)innolightBERT.Tx1_Swing;                break;            case 1:                this.comboBoxSwing.SelectedIndex = (int)innolightBERT.Tx2_Swing;                break;            case 2:                this.comboBoxSwing.SelectedIndex = (int)innolightBERT.Tx3_Swing;                break;            case 3:                this.comboBoxSwing.SelectedIndex = (int)innolightBERT.Tx4_Swing;                break;             default:                 return;        }    }    catch (Exception ex)    {        MessageBox.Show(ex.Message);    }}

以上就是 从0自学C#06–多窗体共用对象的内容,更多相关内容请关注PHP中文网(www.php.cn)!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1432062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 06:10:09
下一篇 2025年12月13日 09:08:51

相关推荐

  • 从0自学C#07–螺旋队列和螺旋运动

    基于螺旋队列逻辑的螺旋运动实现 螺旋队列算法的逆向方法,控制两轴马达按螺旋轨迹运动,如下图。 1.螺旋队列算法分析 下图是螺旋队列。设1的坐标是(0,0),x方向向右为正,y方向向下为正,例如,7的坐标为(-1,-1),2的坐标为(1,0)。编程实现输入任意一点坐标(x,y),输出所对应的数字!(转…

    2025年12月17日
    000
  • 从0自学C#08–绘制曲线chart控件

    chart控件的使用 本文介绍如何使用工具箱里的chart控件,绘制多条曲线。效果图如下: 1.InitializeChart 在窗体里添加chart控件,然后在属性里清空ChartAreas、Legends和Series集合,它们会由下面代码动态实现。在窗体构造函数里,实现InitializeCh…

    2025年12月17日
    000
  • 从0自学C#09–抽象工厂模式实例

    1.适用环境 (主要是用在生产制造多种产品,软件有多种皮肤,多种数据库等环境) 一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有类型的工厂模式都是重要的。 系统中有多于一个的产品族,而每次只使用其中某一产品族。 属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现…

    2025年12月17日
    000
  • 从0自学C#10–在线绘制类图

    在线绘制类图和UI图的网站 免费,可在线绘制,可保持到本地。 网址:https://www.processon.com 以上就是 从0自学C#10–在线绘制类图的内容,更多相关内容请关注PHP中文网(www.php.cn)!

    2025年12月17日
    000
  • 从0自学C#11–多线程创建方法汇总以及优缺点

    基本概念 1. 进程 进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。进程之间是相对独立的,一个进程无法直接访问另一个进程的数据(除非利用分布式计算方式),一个进程运行的失败也不会影响其他进程的运行,Windows系统就是利用进程把工作划分为多个独立的区…

    2025年12月17日 好文分享
    000
  • 从0自学C#12–线程同步解决方法汇总以及优缺点

    首先,肯定的一点:microsoft的framework class library(fcl)保证了所有静态方法都是线程安全的。 FCL不保证实例方法是线程安全的。因为假如全部添加锁定,会造成性能的巨大损失。另外,假如每个实例方法都需要获取和释放一个锁,事实上会造成最终在任何给定的时刻,你的应用程序…

    好文分享 2025年12月17日
    000
  • 从0自学C#13–子类和父类方法的锁对象问题

    调用父类方法时,如何与子类方法,在锁对象不是同一个实例下,能线程安全,请见下面三种情况。 case1: 如下代码,在调用父类的方法时,和子类的方法,发生线程安全问题。原因的锁对象的实例不是同一个。 using System;using System.Collections.Generic;using…

    好文分享 2025年12月17日
    000
  • C++ 中字符串的使用

    当我们一开始使用c++语言来处理字符串的时候,会感觉非常的麻烦。c语言中缺少相应的字符串处理函数,如果想要实现某个字符串功能,只能靠我们自己来实现。但是当来到c++中,字符串的处理就会变得异常简单。今天我们就来学习一下c++中最高频的字符串处理函数。示例代码上传至:https://github.co…

    好文分享 2025年12月17日
    000
  • C++ 函数内联

    1. 用内联取代宏代码 C++ 语言支持函数内联,其目的是为了提高函数的执行效率(速度)。 在 C 程序中,可以用宏代码提高执行效率。宏代码本身不是函数,但使用起来象函 数。 预处理器用复制宏代码的方式代替函数调用, 省去了参数压栈、 生成汇编语言的 CALL 调用、返回参数、执行 return 等…

    好文分享 2025年12月17日
    000
  • C++ 智能指针详解

    c++++ 智能指针详解 一、简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。 用智能指针便可以有效缓解这类问题,本文主…

    好文分享 2025年12月17日
    000
  • C++ 的强制类型转换

    q:什么是c风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意? A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。 比如,为了…

    好文分享 2025年12月17日
    000
  • C++ 多线程

    多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,两种类型的多任务处理:基于进程和基于线程。 基于进程的多任务处理是程序的并发执行。 基于线程的多任务处理是同一程序的片段的并发执行。 多线程程序包含可以同时运行的两个或多个部分。这样的程序中的每个部分称为…

    好文分享 2025年12月17日
    000
  • C++ 多线程框架(1):new 一下就启动一个线程

    几年前写过一个c++++的多线程框架,虽然写完了,但是人一懒做了一次说明以后就没影了,最近把代码整理了一下,准备发到github上,在这里,再把这个框架总结一下吧。 多线程一直是编程中常见的问题,特别是在Linux的c++上,多线程的封装一直不是很好,当然,有很多第三方库可以用,比如boost之类的…

    好文分享 2025年12月17日
    000
  • 从0自学C#01–自绘窗体边框

    主要介绍自绘窗体边框和背景颜色逐级变浅(深)。 1.先设置窗体为无边框模式 this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 也可以右击窗体,选择属性,找到FormBorderStyler设置为None。此时窗体右上角…

    好文分享 2025年12月17日
    000
  • 从0自学C#02–子线程访问主线程(UI线程)控件

    如果使用多线程处理来提高 windows 窗体应用程序的性能,则你必须确保以线程安全的方式调用控件。 访问 Windows 窗体控件不是本身就线程安全的。如果有两个或两个以上线程操作控件的状态,则可能迫使该控件处于不一致状态。可能出现其他与线程相关的 bug,例如争用条件和死锁。请务必确保以线程安全…

    2025年12月17日
    000
  • 从0自学C#03–文件流保存数据为txt/excel格式

    主要介绍datatable、日志log、文件流filestream、streamwriter类,将数据保存为txt和excel格式。 1.创建TestDataTable类 CreateTable()方法创建一个数据table,SaveTableToExcel(string fileName)方法将数…

    好文分享 2025年12月17日
    000
  • 从0自学C#04–特性和设计原则

    1.三大特性 封装:隐藏内部实现。 继承:复用现有代码。 多态:改写对象行为。 2.设计原则 单一职责原则 Single Responsibility Principle(SRP) 一个类仅有一个引起它变化的原因。 开闭原则 Open-Close Principle(OCP) : 类模块应该是可扩展…

    好文分享 2025年12月17日
    000
  • C#学习日记27—-属性

    属性可以是 类(class)、结构(struct)、接口(interface)的命名成员,他提供灵活的机制来读取、写入、或计算私有(private)字段的值,属性可以看作是公共(public)字段的成员,但他实际上是定义了一个“访问器”的特殊方法让私有字段的值可以被读写或操作。    说的形象点吧,…

    2025年12月17日
    000
  • C#学习日记28—索引器、重载索引器

      索引器允许类或者结构的实例就像数组一样进行索引,当您为一个类定义一个索引器时,这个类就会像一个数组一样,您可以使用数组访问符 ‘[]’ 对该类的实例进行访问.. 索引器与 属性  类似,但是索引器要采用参数,(也可以这么认为,索引器是一个类的属性,同样也是通过访问器(一种…

    2025年12月17日
    000
  • C#学习日记29—-二维索引器 与 foreach遍历索引器

    上一篇结尾的时候我留下了几个问题,因为要断电了没有解决,这一篇我们继续上一篇的内容。点这里回到上一篇 问题1:         数组有多维度的,索引器也可以是多维的吗???          索引器可以是多维的,上一篇中我们定义的索引器只是一维索引器,同数组一样可以定义多维索引器。比如我们索引电影院…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信