热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#对象间的协作和信息交换(三)从窗体向主窗体传递消息

从窗体向主窗体传递消息从窗体向主窗体传递消息分两种:一种是主窗体主动等待从窗体过来的消息并处理,比如添加账号,添加完账号后要关闭当前窗体,主窗体检查从窗体的关闭状态进而做处理;
从窗体向主窗体传递消息

  从窗体向主窗体传递消息分两种:一种是主窗体主动等待从窗体过来的消息并处理,比如添加账号,添加完账号后要关闭当前窗体,主窗体检查从窗体的关闭状态进而做处理;另种是从窗体主动向主窗体“汇报情况”,主窗体是一种被动接收状态,这种情况下会涉及到两种极为重要的编程技巧:对象注入和“回调”的使用。

主窗体主动等待

  主窗体主动等待也可以使用公有属性和公有方法两种方法。
最终效果图,从窗体中点击确定后,在主窗体中显示从窗体发送过来的消息。
《C#对象间的协作和信息交换(三)从窗体向主窗体传递消息》
《C#对象间的协作和信息交换(三)从窗体向主窗体传递消息》

  下面看下编程实现,代码项目:FromOtherToMain。
1. 定义一个从窗体变量,点击“显示从窗口”按钮时等待从窗体的返回结果,然后把消息收集回来。

private frmOther otherForm;
if (otherForm.ShowDialog() == DialogResult.OK)
{
//使用公有属性
//lblReceive.Text = otherForm.UseOtherInput;
//使用公有方法
string rec_message = null;
otherForm.UserOtherInputFuc(ref rec_message);//注意这里传引用,收于收集从窗体的消息。
lblReceive.Text = rec_message;
return;
}

2. 从窗体公有属性和公有方法的实现

public string UseOtherInput
{
get
{
return txtInput.Text;
}
}
public void UserOtherInputFuc(ref string message)
{
message = txtInput.Text;
}

从窗体主动汇报

  最终效果如下图显示。在主窗体中点击“创建从窗体”可以创建出多个从窗体,然后在第一个窗体中输入“我是窗口1”后点击确定,此时在主窗体中会显示“我是窗口1”。
  《C#对象间的协作和信息交换(三)从窗体向主窗体传递消息》

  在第二个窗体中输入“我是窗口2”后点击确定,此时在主窗体中会显示“我是窗口2”。
  《C#对象间的协作和信息交换(三)从窗体向主窗体传递消息》

  下面看下编程实现,代码项目:FromOtherToMain2。
1. 主窗体中实现这个Report函数,给从窗体调用,从窗体调用此函数并把从窗体中的消息传给主窗体。

public void Report(string message)
{
lblShowMessage.Text = message;
}

2. 主窗体中定义一个从窗体变量,点击“创建从窗体”时窗建从窗体,但注意点每次new的时候都把主窗体通过参数this传递给了从窗体,这就是对象注入。

frmOther other = null;
private void btnShowNewForm_Click(object sender, EventArgs e)
{
other = new frmOther(this);
other.Show();
}

3.从窗体的构造函数frmOther不是默认的不带参数的,而是经过修改带一个frmMain类型的参数,用于接收主窗体对象。

private frmMain mainForm = null;
public frmOther(frmMain main)
{
InitializeComponent();
txtInput.Focus();
mainForm = main;
}

4.在从窗体中输入消息并点击确认后触发的事件如下。

private void btnOK_Click(object sender, EventArgs e)
{
string message = txtInput.Text.Trim();
if (message != "")
mainForm.Report(message);//回调主函数的Report函数,把从窗体的消息传给主窗体。
else
MessageBox.Show("没消息我传不了啊!");
}

推荐阅读
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 第一步:PyQt4Designer设计程序界面该部分设计类同VisvalStudio内的设计,改下各部件的objectName!设计 ... [详细]
  • WPF之Binding初探
      初学wpf,经常被Binding搞晕,以下记录写Binding的基础。首先,盗用张图。这图形象的说明了Binding的机理。对于Binding,意思是数据绑定,基本用法是:1、 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文介绍了停用Vaadin焦点颜色的全局方法。焦点环是一种辅助功能,用于指示字段已从键盘交互获得焦点。每个组件和主题的焦点环样式不同。文章提供了一种方便的方法来找到和修改焦点环样式,通过检查shadow DOM中的标签并覆盖相应的样式。同时,还介绍了使用with或导入样式表的方法来应用修改后的样式。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了在go语言中利用(*interface{})(nil)传递参数类型的原理及应用。通过分析Martini框架中的injector类型的声明,解释了values映射表的作用以及parent Injector的含义。同时,讨论了该技术在实际开发中的应用场景。 ... [详细]
author-avatar
神的禁卫军
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有