Winform 单例模式下,能否传值?怎么传值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Winform 单例模式下,能否传值?怎么传值?相关的知识,希望对你有一定的参考价值。
就是再打开的单例窗体中获取值,传到主窗体
自己写一个类,存放值、给你参考。把值放到这里的session里面就行using System;
using System.Collections;
/// <summary>
/// Session 的摘要说明。
/// </summary>
/// namespace BusinessTools.Service
namespace BusinessTools.Service
public class Session : DictionaryBase
private static Session assion = null;
/// <summary>
/// 生成一个实例
/// </summary>
public Session()
/// <summary>
/// 得到一个单身实例
/// </summary>
/// <returns>返回类型为Session</returns>
public static Session GetSession()
if (Session.assion == null)
Session.assion = new Session();
return Session.assion;
/// <summary>
/// 添加新成员
/// </summary>
/// <param name="newID">新字成员名字</param>
/// <param name="newmember">新成员</param>
public void Add(string newID, Object newmember)
try
if (Dictionary.Contains(newID))
return;
Dictionary.Add(newID, newmember);
catch
return;
/// <summary>
/// 删除成员
/// </summary>
/// <param name="memberID"></param>
public void Remove(string memberID)
try
Dictionary.Remove(memberID);
catch
return;
/// <summary>
/// 本类的索引器
/// </summary>
/// <returns>返回Object成员</returns>
public Object this[string memberID]
get
try
Object obj = (Object)Dictionary[memberID];
Dictionary.Remove(memberID);//销毁
return obj;
catch
return null;//如果没有数据则返回null
set
try
this.Dictionary.Add(memberID, value);
catch
return;
参考技术A 可以传值!事件,属性,接口,函数。。。。 参考技术B 属性
winform 窗体传值刷新问题。
f1窗体 中放一个 label1 控件
f2窗体 中放一个 textBox1 控件 和一个 button1 控件
(他们不是继承关系)
在 f2的 textBox1 中输入一个值 然后点击 f2的 button1 要能马上改变 f1中 label1 里面的值 请问要怎么做?
F2是从F1中打开的
在F2中Show F1不是再打开一次F1么
我不需再次打开F1
f1中
Form2 f2 = new Form2();
f2.Owner = this;
f2.Show();
f2中
Form1 f1;
f1 = (Form1)this.Owner;//这句不要写在构造方法里(会出错)最好写在Form2的Load方法里
f2的button1_Click事件中
f1.label1.Text = this.textBox1.Text;本回答被提问者采纳 参考技术B 有很多种方法可以做到
1.比如你点按钮的时候可以将textBox1的值赋值给cookie,Session。。
当f1种的Page_Onload的时候将cookie,session的值赋给label1
2.当点按钮的时候带一个参数的值链接到f1,然后lable1的值等于那个参数就OK
3...
以上是BS
CS的话就更容易,直接实例化f1就OK 参考技术C 可参考如下方法:
1、将f1窗体中的label1控件的级别设为pulic;
2、在f2窗体中通过如下语句进行操作——
f1 myform=New f1();
myform.Show();
myform.label1.Text=textBox1.Text; 参考技术D 在f1里面建立一个属性
private string Flag;
public string flag
get return Flag;
set Flag = value;
在f1的Load事件里写
label1.Text=Flag;
然后写f2里面的按钮点击事件
private void btn_Click(object sender, EventArgs e)
f1=new Form();
f1.Flag=textbox1.Text;
f1.Show();
this.Visible=false;
那你就不show,visible可以么?隐藏~显示~或者你把Label设为Public控件,直接给他赋值~
以上是关于Winform 单例模式下,能否传值?怎么传值?的主要内容,如果未能解决你的问题,请参考以下文章