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 ...
随机推荐
- linux 系统下配置安装 java jdk 图文流程
先查看一下系统版本,本例采用的操作系统是CentOS 6.5: 如果你是初装之后的操作系统,那么有可能wget这个组件是不存在的,所以你要安装一下它,这样才可以让你从网上down下你要的安装包: 上面 ...
- 关于降低android手机摄像头预览分辨率
假设现在有这样一个需求需要一直开着手机摄像头 但是不做任何拍照动作 但是每个手机的相机分辨率都不同 而默认预览的时候参数是最大分辨率 这样有时候就回导致电量损耗的加快 所以我们可以采取降低相机分辨率的 ...
- 上拉、下拉UITableView,交互式 模态弹出(自定义弹出动画)
部分代码 InteractiveTransition 类继承NSObject: - (instancetype)initWithPresentingController:(UITableViewCon ...
- jdk内存
- codeforces 339C Xenia and Weights(dp或暴搜)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Xenia and Weights Xenia has a set of weig ...
- commons-logging 和 log4j 之间的关系
我们在做项目时,日志的记录是必不可少的一项任务,而我们通常是使用 apache 的 log4j 日志管理工具.然而,在项目中,我们经常会看到两个 jar 包:commons-logging.jar 和 ...
- 用git提交代码步骤
1.git add XXXX2.git commit - 'xxx'3.git stash4. //git pull --rebase 4. git rebase origin/develop git ...
- GTW likes gt(BC 模拟 or 优先队列)
GTW likes gt Accepts: 54 Submissions: 782 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 13107 ...
- LigerUI 分页 MVC
Javascirpt代码 $("#showData").ligerGrid({ columns: [ { display: '编号', name: 'L_ID', align: ' ...
- 论JS的重要性
最近有学习了JavaScript,学习的过程中发现js对于前端工程师来说可以是最终要的一部分. 个人认为js就是一门语言,如果把前端比作一个人的身体,那么html就是一个人的结构,css就是这个人长的 ...