[原创]多个窗体之间的参数传递与数据共享(附:UML图)
[原创]多个窗体之间的参数传递与数据共享(附:UML图)
学习内容 /************************************************************************** * 学习内容: * 1. 如何打开一个对话框并传入参数。 * 2. 多个窗体之间的参数传递与数据共享 * 3. 如何创建一个单件模式的窗体。 * 4. 对象传递原理与实现 * 简单地说,定义变量就是给对象分配一个内存地址,在对象没有实例化前 * 该内存地址仅表示变量的位置。对象传递可以理解为传递对象指针(Point). * 如需要更明确内存分配原理,请在网上搜查"Windows下动态内存分配方式" * 推荐2本学C#的书:《.net本质论》:《C#设计模式》 ***************************************************************************/ UML图示 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace www.csframework.com { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnOpenDialog_Click(object sender, EventArgs e) { //调用对话框的ExecuteFind静态方法 //打开一个对话框并传入参数。 Form2.ExecuteFind(this, this.richTextBox1); } } } Form2.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace www.csframework.com { public partial class Form2 : Form { public Form2() { InitializeComponent(); } //由外部传进来的对象.(*指针) private RichTextBox _RichTextBox = null; public RichTextBox RichTextBox { get { return _RichTextBox; } set { _RichTextBox = value; } } //当前窗体实例 private static Form2 _Instance = null; public static void ExecuteFind(Form owner, RichTextBox richTextBox) { //引用设计模式的单件模式。永远只创建一个窗体。 if (_Instance == null) _Instance = new Form2(); _Instance.RichTextBox = richTextBox; //保存由外部传入的变量 if (_Instance.Visible) //如果对话框实例已经打开,设置窗体焦点 _Instance.Activate(); else _Instance.Show(owner); //第一次打开,显示窗体。owner参数为 //owner参数表示将拥有此窗体的顶级窗口的对象。 } private void btnFind_Click(object sender, EventArgs e) { string s = textBox1.Text; //调用由外部传进来的对象的方法。 int pos = _RichTextBox.Text.IndexOf(s); if (pos > 0) { RichTextBoxTool.FindFirst(this._RichTextBox, s); } } private void Form2_FormClosed(object sender, FormClosedEventArgs e) { _Instance = null; //当关闭窗体的时候,记得将变量设为null } } } 扫一扫加作者微信
参考文档:
打开窗体并传入参数 指定单据号码自动打开业务单据窗体并显示数据 打开VS的窗体设计器,经常出现:若要在加载设计器前避免可能生成的数据丢失,必须纠正以下错误: 数据字典窗体预设提供导出资料的,但是没显示按钮 关于frmBaseChild.SetParameter方法说明与使用,打开窗体传入参数例子 代码生成器生成的数据字典窗体可支持流水号 跨模块打开窗体,支持传入参数加载不同类型的数据 C#.NET WEBAPI 接口设计-调用多个参数的接口 WebApi接口使用HttpGet方式实现接受实体类参数(原创) 开发技巧:弹出勾选窗体并返回数据 SQL2008多个查询条件分页查询脚本(原创) Win7,8,10解决无法通过IP连接XP共享打印机的问题(原创) 数据窗体权限:修正AuthorityCategory.ALL_ACTION_VALUE常量定义|C/S框架网 Winform查询数据对话窗体与选择资料窗体实现|C/S框架网 使用观察者模式实时更新程序打开多个界面绑定组件的数据源
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |