Winform单例模式与传值
单例模式(singleton)的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
在多窗体界面中,如果要加入一个“关于”的窗体,用于显示软件的信息,那么可以用到单例模式,因为“关于窗体”类只需一个实例,下面是实例的代码:
"关于窗体":
1.在vs中建立winform项目,并建立两个窗体form1和form2
Form1单例:
private static Form1 _instance = null;
public Form1()
{
InitializeComponent(); }
public static Form1 GetInstance()
{
if(_instance==null || _instance.IsDisposed)
{
_instance = new Form1();
}
return _instance;
}
Form2单例和Form1相同。
2.窗体传值
winform窗体之间的传值可以分为主窗体向子窗体传值,以及子窗体向父窗体传值。
父窗体向子窗体传值:一直采用属性或者构造函数的方法,这里讲述属性的方法。首先需要定义一个属性
public string TextValue
{
get
{
return this.label1.Text;
}
set { this.label1.Text = value; }
}
属性
我这里是传递一个label的值。
form2中接收:
private void button1_Click(object sender, EventArgs e)
{
if(AfterText!=null)
{
AfterText("");
this.label1.Text = Form1.GetInstance().TextValue;
} }
接收属性值
值得注意的是采用单例模式后,在form2中调用form1的方法。
子窗体向父窗体传值:一般采用事件或者委托来执行,这里采用委托的方法。
在form2中定义委托: public Action<string> AfterText {get;set;}
执行委托: AfterText("10");
from1在打开form2的时候,需要注册委托:
Form2 form2 = Form2.GetInstance();
form2.AfterText = new Action<string>(this.CalculFinish);
form2.Show();
Winform单例模式与传值的更多相关文章
- C# WinForm 单例模式(例:同一个窗体只创建一次实例)
//C# WinForm 单例模式(例:同一个窗体只创建一次实例) //打开窗体的事件: Form3 f = Form3.InstanceObject() ; //实例化窗体 f.Focus(); / ...
- C# Winform窗口之间传值的多种方法浅析(转)
摘要http://www.jb51.net/article/63837.htm 这篇文章主要介绍了C# Winform窗口之间传值的多种方法浅析,本文起讲解了通过构造器传值.通过属性传递.通过事件携带 ...
- C# winform窗体间传值(使用委托或事件)
窗体间传值 今天得空,刚好看到网上好多人再找winform窗体间传值的问题,由于昨天项目的优化的感觉不错,就写了个C# winform窗体间传值的demo,希望能给需要的人的带来帮助: 工程的源代码地 ...
- C#使用事件方式Winform窗体之间传值
[摘自:http://www.cnblogs.com/codeToUp/p/5371062.html] 工程的源代码地址:https://github.com/yes-or-no/WinFormTra ...
- C# Winform利用POST传值方式模拟表单提交数据(Winform与网页交互)
其原理是,利用winfrom模拟表单提交数据.将要提交的參数提交给网页,网页运行代码.得到数据.然后Winform程序将网页的全部源码读取下来.这样就达到windows应用程序和web应用程序之间传參 ...
- winform 窗体间传值
WinForm 两窗体之间传值实例 2010-12-27 22:10:11| 分类: 学业|举报|字号 订阅 下载LOFTER我的照片书 | 窗体Form1和Form2 Form2 ...
- 观察者模式的应用:Winform窗体之间传值
观察者模式的应用:Winform窗体传值 观察者模式的概念: 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并更新. 今天我们就学着用一下这个观察者模式,先想象 ...
- (C#)WinForm窗体间传值
1.通过构造函数 特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在窗体Form2中 int value1; string value2; public Form2 ( int v ...
- WinForm窗体间传值
1.通过构造函数 特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在窗体Form2中 int value1; string value2; public Form2 ( int val ...
随机推荐
- NET中级课--浅谈委托,事件,异步调用,回调等概念
直接说题. 委托 首先明确它是什么,其实就是一个类,定义一个委托即定义一个类,那么它是什么类?用来说明方法的类型的类.字段有类型,那么方法其实也有类型,就是委托. 委托是某 ...
- 《JavaScript 闯关记》之作用域和闭包
作用域和闭包是 JavaScript 最重要的概念之一,想要进一步学习 JavaScript,就必须理解 JavaScript 作用域和闭包的工作原理. 作用域 任何程序设计语言都有作用域的概念,简单 ...
- document.write 存在几个问题?应该注意
document.write (henceforth DW) does not work in XHTML XHTML 不支持 DW executed after the page has finis ...
- 【jquery ,ajax,php】加载更多实例
jquery $(function() { //初始化 getData(0); var index = 1; $("#more").click(function() { getDa ...
- 如何在程序退出的时候清除activity栈
在公司里接手了一个后期的项目,由于项目前期对activity栈管理的不够谨慎,所以导致了在某些情况下程序退出的时候没有将activity栈清除掉.在网上找到的无非就是那几种例子,都不是最好的解决办法. ...
- SQL Server两种分页的存储过程介绍
由于现在很多的企业招聘的笔试都会让来招聘的写一个分页的存储过程,有的企业甚至要求应聘者用两种方式实现分页,如果没有在实际项目中使用过分页,那么很多的应聘者都会出现一定的问题,下面介绍两种分 ...
- IOS Block 反向传值
1.在需要像上一个界面传值的.h 文件实现代理方法 @property (nonatomic, copy) void(^isOpenHandler)(BOOL) ; 2.在执行操作的时候需要江操作的结 ...
- 面试题:Java静态/非静态方法重写
1.非静态方法重写 public class Test { public static void main(String[] args) throws Exception { Tree pine = ...
- gulp压缩js
1.安装nodejs -> 全局安装gulp -> 项目安装gulp以及gulp插件 -> 配置gulpfile.js -> 运行任务 2.查看nodejs的版本号 3.npm ...
- MongoDB监控一 mongostat
mongostat命令 mongostat可以提供mongod和mongos ...