[原创]多个窗体之间的参数传递与数据共享(附:UML图)
[原创]多个窗体之间的参数传递与数据共享(附:UML图)![[原创]多个窗体之间的参数传递与数据共享(附:UML图) [原创]多个窗体之间的参数传递与数据共享(附:UML图)](http://www.csframework.com/images/seo/SEO-Cshart%E6%BA%90%E7%A0%8111.jpg)
学习内容
/**************************************************************************
* 学习内容:
* 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);
}
}
}
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
}
}
}
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
}
}
}

参考文档:
CS系统三层架构扩展支持WCF及策略模式应用(原创)
TMS-物流运输管理系统《系统详细设计说明书》docx下载(原创文档)
轻松学习UML之类图,状态图-C/S开发框架
【原创】WCF开发框架 - 采用wsHttpBinding及basicHttpBinding连接https协议的WCF服务
原创C/S架构开源软件 - C#.NET+Winform+Dev+SQL快速开发框架
CSFramework.COM原创:全球国家名称列表国旗图标库导入程序(C#+VS2015)
原创:SQLJOB作业自动备份数据库并自动清除备份历史记录
【原创产品】自己开发MES系统软件,MES开发架构及MES客户端快速开发框架平台
【原创】进销存软件开发模板基于C/S架构快速开发框架C#+Winform+DevExpress
原创:C#源码 GridMovetor按回车自动跳到下一列或自动新增记录(www.csframework.com)
原创:C/S架构快速开发框架通用可配置的数据修改日志解决方案
【原创】WebApi开发框架:Token生成、Token缓存原理、Token验证、令牌机制与原理
【原创】C# Winform Dev自动下拉弹框筛选数据PopupContainerEdit组件
【原创】C# Dev用户自定义组件,自动下拉弹框表格过滤数据组件ucMyLookUpEdit
【原创】C# 深度拷贝对象 使用.NET反射+递归原理实现深度克隆
【原创】简单快速软件开发平台,C/S架构二次开发平台
CS系统三层架构扩展支持WCF及策略模式应用(原创)
TMS-物流运输管理系统《系统详细设计说明书》docx下载(原创文档)
轻松学习UML之类图,状态图-C/S开发框架
【原创】WCF开发框架 - 采用wsHttpBinding及basicHttpBinding连接https协议的WCF服务
原创C/S架构开源软件 - C#.NET+Winform+Dev+SQL快速开发框架
CSFramework.COM原创:全球国家名称列表国旗图标库导入程序(C#+VS2015)
原创:SQLJOB作业自动备份数据库并自动清除备份历史记录
【原创产品】自己开发MES系统软件,MES开发架构及MES客户端快速开发框架平台
【原创】进销存软件开发模板基于C/S架构快速开发框架C#+Winform+DevExpress
原创:C#源码 GridMovetor按回车自动跳到下一列或自动新增记录(www.csframework.com)
原创:C/S架构快速开发框架通用可配置的数据修改日志解决方案
【原创】WebApi开发框架:Token生成、Token缓存原理、Token验证、令牌机制与原理
【原创】C# Winform Dev自动下拉弹框筛选数据PopupContainerEdit组件
【原创】C# Dev用户自定义组件,自动下拉弹框表格过滤数据组件ucMyLookUpEdit
【原创】C# 深度拷贝对象 使用.NET反射+递归原理实现深度克隆
【原创】简单快速软件开发平台,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内容管理系统 |
什么是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内容管理系统 |
在线客服
