WinForm开发,窗体显示和窗体传值相关知识总结
主窗体中代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void btnOpen_Click(object sender, EventArgs e)
{//点击弹出方法
FrmChild frmChild = new FrmChild();
frmChild.ShowDialog();
if (frmChild.DialogResult == System.Windows.Forms.DialogResult.OK)
{
textBox1.Text = frmChild.StrValue;//获取弹出窗体的属性值
}
}
}
弹出窗口中代码:
public partial class FrmChild : Form
{
public FrmChild()
{
InitializeComponent();
}
private string strValue = ""; public string StrValue
{
get { return strValue; }
set { strValue = value; }
}
private void btnOK_Click(object sender, EventArgs e)
{ //点击确定后
strValue = textBox1.Text; //将文本框的值赋予窗体的属性
this.DialogResult = DialogResult.OK;
this.Close();
} }
WinForm窗体传值
了解了窗体的显示相关知识,接着总结一下窗体的传值方法:
1.通过构造函数
特点:传值是单向的(不可以互相传值),实现简单
实现代码如下:
在窗体Form2中
int value1;
string value2;
public Form2 ( int value1 , string value2 )
{
InitializeComponent ( );
this.value1 = value1;
this.value2 = value2;
}
在窗体Form1中这样调用
new Form2 ( 111 , "222" ).Show ( ); //这样就把111,"222",这2个值传送给了Form2
2.通过静态变量
特点:传值是双向的,实现简单
实现代码如下:
在一个app类中定义一个静态成员value
public class app
{
public static string value;
}
在窗体Form1中这样调用
app.value = "f2"; //给静态成员赋值
new Form2 ( ).Show ( ); //显示Form2
在窗体Form2中
this.Text = app.value; //取回app.value的值
app.value = "Form2"; //给app.value赋值,以便其他窗体调用
3.通过窗体的公有属性值
特点:实现简单
实现代码如下:
在窗体Form2中定义一个公有属性Form2Value,获取和设置textBox1的文本值
public string Form2Value
{
get
{
return this.textBox1.Text;
}
set
{
this.textBox1.Text = value;
}
}
在窗体Form1中这样调用
Form2 f2 = new Form2 ( );
f2.Form2Value = "Ok"; //给Form2的textBox1赋值Ok
f2.ShowDialog ( );
4.通过窗体的公有属性值和Owner属性
特点:实现简单,灵活
实现代码如下:
在窗体Form1中
public int Form1Value = 1;
Form2 f2 = new Form2 ( );
f2.ShowDialog ( this ); //把Form1作为Form2的所有者传递给Form2
在窗体Form2中
//Form2的所有者是Form1
Form1 f1 = ( Form1 ) this.Owner;
//取到Form1的值是1
MessageBox.Show ( f1.Form1Value .ToString ( ) );
//给Form1的Form1Value赋值222
f1.Form1Value = 222;
5.通过窗体的公有属性值和Application.OpenForms属性
说明:Application.OpenForms属性:获取属于应用程序的打开窗体的集合。(此属性在 .NET Framework2.0版中)
实现代码如下:
在窗体Form1中
public int Form1Value = 1;
Form2 f2 = new Form2 ( );
f2.Show ( );
在窗体Form2中
string formName = "Form1";
Form fr = Application.OpenForms [ formName ];
if ( fr != null )
{
Form1 f1 = ( Form1 ) fr;
//取到Form1的值是1
MessageBox.Show ( f1.Form1Value.ToString ( ) );
//给Form1的Form1Value赋值222
f1.Form1Value = 222;
}
6.通过事件
实现代码如下:
在窗体Form2中定义公有属性Form2Value,获取和设置textBox1的文本值
并且还定义一个accept事件
public string Form2Value
{
get
{
return this.textBox1.Text;
}
set
{
this.textBox1.Text = value;
}
}
public event EventHandler accept;
private void button1_Click ( object sender , EventArgs e )
{
if ( accept != null )
{
accept ( this , EventArgs.Empty ); //当窗体触发事件,传递自身引用
}
}
在窗体Form1中
Form2 f2 = new Form2 ( );
f2.accept += new EventHandler ( f2_accept );
f2.Show ( );
void f2_accept ( object sender , EventArgs e )
{
//事件的接收者通过一个简单的类型转换得到Form2的引用
Form2 f2 = (Form2) sender;
//接收到Form2的textBox1.Text
this.textBox1.Text = f2.Form2Value;
}
http://www.cnblogs.com/aierong/archive/2008/11/17/winform.html WinForm开发,窗体显示和窗体传值相关知识总结
http://blog.sina.com.cn/s/blog_55da6e9d0102w514.html C# winForm中主窗体Form获取弹出窗体的中值最简单方法
WinForm开发,窗体显示和窗体传值相关知识总结的更多相关文章
- 【转】WinForm窗体显示和窗体间传值
以前对WinForm窗体显示和窗体间传值了解不是很清楚 最近做了一些WinForm项目,把用到的相关知识整理如下 A.WinForm中窗体显示 显示窗体可以有以下2种方法: Form.ShowDial ...
- C# WinForm MessageBox.Show显示在窗体中间
一.新建MessageBoxEx类,并添加以下代码. using System; using System.Windows.Forms; using System.Text; using System ...
- Winform开发几个常用的开发经验及知识积累(一)
本人做Winform开发多年,孜孜不倦,略有小成,其中收集或者自己开发一些常用的东西,基本上在各个项目都能用到的一些开发经验及知识积累,现逐步介绍一些,以飨读者,共同进步. 1.窗口[×]关闭按钮变为 ...
- Winform WPF 窗体显示位置
WinForm 窗体显示位置 窗体显示的位置首先由窗体的StartPosition决定,FormStartPosition这个枚举值由如下几种情况 // 摘要: // 窗体的位置由 System.Wi ...
- WPF 子窗体关闭时显示父窗体
这个问题纠结了两天,今天在一个朋友的帮助下,解决了,其实很简单,但是可能作为新手,接触WPF时间还是短,因此作为一个问题困扰了我. 父窗体部分代码 private void EditInformati ...
- Winform开发之窗体传值
Winform的窗体之间的数据传递是开发的必备技术,下面介绍几种典型的传值方法 1.构造函数传值,但这种方法是单向的(推荐) 上代码,先传值 private void button2_Click(ob ...
- Winform开发之窗体显示、关闭与资源释放
Winform的窗体涉及到一般窗体(单文档窗体).MDI窗体.窗体之间的关系等,那么如果调用打开新窗体.如何关闭窗体.窗体资源的释放等都关系到软件运行的效率,本文一一介绍 1.窗体的显示 从一个窗体打 ...
- C#+Winform开发窗体程序
学习笔记 第一章:winform基础 一.概述 1.Windows Form(简称WinForm) 是微软.NET平台下用于开发"图形界面"应用程序的组件. 2.C/S架构 客户机 ...
- 2017-4-24 WinForm开发基础、窗体的属性CenterScreen
WinForm中文名称: Windows窗体,是·Net开发平台中对Windows Form的一种称谓. 客户端应用程序:C/S 客户端很重要的特点:可以操作用户电脑上的文件 窗体属性:窗体种类: + ...
随机推荐
- 容器学习(一):动手模拟spring的IoC
介绍 学习经典框架的实现原理以及设计模式在事实上际中的运用,是很有必要的,能够让我们更好进行面向对象. 本篇文章就来模拟Spring的IOC功能.明确原理后,能够更好的使用它,进而为进行面向对象提供一 ...
- MATLAB数据处理快速学习教程
转自:http://blog.csdn.net/abcjennifer/article/details/7706581 本篇内容集合了MATLAB中的基本操作.数据存储与计算.数据的直线与曲线拟合与画 ...
- java线上服务问题排查
1.业务日志相关 假设系统出现异常或者业务有异常,首先想到的都是查看业务日志 查看日志工具: less 或者more grep tail -f filename 查看实时的最新内容 ps:切忌vim直 ...
- 【nodejs】使用response输出中文但页面中文乱码的处置
两点要确认: 1.head里有<meta charset="utf-8"/> 2.js文件编码为utf-8格式. 第二点往往容易被忽略,所以出现乱码. 附上代码: 'u ...
- Linux:su和su-的区别
大部分Linux发行版的默认账户是普通用户,而更改系统文件或者执行某些命令,需要root身份才能进行,这就需要从当前用户切换到root用户.Linux中切换用户的命令是su或su -. 如上图所示,一 ...
- 持续集成之路 —— Mock对象引起的测试失败
今天遇到了一个很奇怪的问题,纠结了好久.在和同事念叨这个问题时,突然想到了问题所在. 问题现象: 在一个Service的单元测试类中有八个测试用例,单独运行时都可以正常通过.可是一旦一起运行时,总是会 ...
- 创建线程安全的单例(ARC或 非ARC)
一:创建 宏 文件 SynthesizeSingleton.h SynthesizeSingleton.h #if __has_feature(objc_arc) // ARC Version #de ...
- 【Maven】IKAnalyzer 在Maven Repository不存在
1.在mvnrepository里面找IKAnalyzer,这个中文分词包,一直没有找到,找到github,发现是一个国人写的. http://mvnrepository.com/search?q=I ...
- java面试第七天
反射: 反射:在运行时动态分析或使用一个类进行工作. java.lang.Class类:描述类信息的类. 类对象:描述一个类信息的对象,当虚拟机加载类的时候,就会创建这个类的类对象并加载该对象,Cla ...
- iOS Dev (50)用代码实现图片加圆角
用代码实现图片加圆角: iconView.layer.masksToBounds = YES; iconView.;