C# 两种窗体传值。

一、利用属性窗体传值。

其实,利用属性传值,原理就是,把窗体Form1(父)和窗体Form2(子)当作两个类。在窗体Form1中new出Form2的新实例之后,通过给Form2窗体定义一个属性来提供一个供Form1调用的接口,说明白了就是,Form2里边有一个“东东(属性)”,是被设置为共有的,在其他类(父类)中新创建了Form2类的新实例后,可以通过Form2的新实例的这个"东东(属性)"(注意当前是在其他类窗体(父类),不是在Form2),来传递Form2的某个控件的值。下面结合代码可能会好理解一点:

首先,在Form1里添加一个button和一个label,在Form2里添加一个TextBox和一个button。代码如下:

 1 /////////////////////////////////////////////////////////////////////////////
 2 //Form1: Button事件。
 3 Form2 frm2 = new Form2();
 4 frm2.ShowDialog();    //此处注意与frm2.Show()的区别。
 5 if(frm2.DialogReasult == DialogReasult.OK)//判断子窗体是否确定关闭。
 6 {
 7    label1.Text = frm2.send;//调用Form2新实例的属性。
 8 }
 9
10 //Form2 定义一个属性,用于传值
11 public string send
12 {
13    get{ return textBox1.Text};
14 }
15 //Form2 Button事件。
16 this.DialogReasult == DialogReasult.OK
17 /////////////////////////////////////////////////////////////////////////////

至此,利用属性进行窗体传值的方法就结束了。如果想要进一步了解什么是属性的话,可以参考我的另一篇拙文:

|博客园:http://www.cnblogs.com/gu-zhan/p/4122045.html 老咸出品|

二、利用委托窗体传值。

说实话,其实委托,就是把一个函数作为另一个函数的参数进行传递。

利用委托进行窗体传值,下面看代码介绍:

 1 ///////////////////////////////////////////////////////////
 2 //Form1:Button事件
 3 Form2 frm2 = new Form2(send);
 4 //new Form2(),这个Form2其实可以看作一个构造函数,我们这里仅仅是把send()这个函数通过构造函数初始化了实例frm2.
 5 frm2.Show();//可区别上面那个例子,与ShowDialog()的区别
 6
 7 //自定义一个函数
 8 public void send(string str)
 9 {
10    label1.Text = str;
11 }
12
13 //Form2:
14 //先声明一个委托,可放在类之外。
15 public delegate void Mydel(string str);
16 //声明一个委托的新实例。
17 public Mydel _del;
18 //重写一下构造函数
19 public Form2(Mydel del)
20 {
21   _del = del;
22   InitializeComponent();
23 }
24
25 //Button事件:
26 _del(textBox1.Text);

这里我们讲一下思路,其实委托传值,就是在Form1中写一个函数,通过创建Form2的新实例的时候,把这个函数通过Form2的构造函数初始化了一遍。

而在Form2中,定义了一个委托实例来接收Form1中,new Form2()的时候,传递进来的那个函数。最后可以理解为,委托实例"_del"就是等于Form1中的"send()"函数,所以可以看到Button事件里是这样的,_del(textBox1.Text);

希望看到这篇文章的人可以把代码敲一遍,你可以先看看最终是否运行成功,得到你所想要的结果,但是最后一定要敲敲敲敲敲...嘻嘻(*^__^*) 。

转载请注明 博客园 :http://www.cnblogs.com/gu-zhan/ 老咸出品

时间: 2024-10-11 04:20:20

C# 两种窗体传值。的相关文章

UIButton的两种block传值方式

方式1 - 作为属性来传值 BlockView.h 与 BlockView.m // // BlockView.h // Block // // Created by YouXianMing on 15/1/14. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import <UIKit/UIKit.h> @class BlockView; /** 定义枚举值 */ typedef enum : NSUInteger

窗体传值的两种实现方法示例

这两天看前辈的视频初识了窗体传值,于是自己跟着敲了两个Demo,方便以后复习.分享交流. 窗体传值的两种方法:1.通过属性构造方法传值 2.利用委托实现传值. 示例1:点击Form1中的按钮打开From2,点击Form2中的按钮改变窗体Form1的背景颜色. Form1的代码: 1 public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 } 7 8 private void but

Response.Redirect 打开新窗体的两种方法

普通情况下,Response.Redirect 方法是在server端进行转向,因此,除非使用 Response.Write("<script>window.location='http://dotnet.aspx.cc';</script>") 方法外,是不能在新窗体打开所指定的  URL 地址的.可是,假设细致分析一下,假设设置 form 元素的 target 属性,还是有办法打开新窗体的.以下就是能够採用的两种方法. 方法一:在server端设置 targ

.Net子窗体给父窗体传值的几种方法

其实方法有很多种,这里只介绍3种,大家如有更好的方法可互相学习学习. 1.子父窗体Owner设定法: Form1: void Button_fm1_Click(object sender, EventArgs e) { Form2 fm2 = new Form2(); fm2.Owner = this;   //将Form2的Owner指针指向Form1 fm2.ShowDialog(); } Form2: void Button_fm2_Click(object sender, EventAr

窗体或控件的两种拖动方式

第一种 音量调节的示例 #region 音量控制 private Point mouse_offset; private void pictureBox7_MouseDown(object sender, MouseEventArgs e) { mouse_offset = new Point(-e.X, -e.Y);// } private void pictureBox7_MouseMove(object sender, MouseEventArgs e) { ((Control)sende

winform防止控件随窗体变化出现布局错乱两种办法

///为了防止控件随窗体变化出现布局错乱的现象,利用两种办法 第一种: 利用锚的方法:即使该控件距离某下边的距离固定 类似于div+css中的margin-left 位置如图所示: 第二种方法: 利用DOCK方法将其填充完,那么当窗体大小变化时,也不会出现错乱情况 当然,有时文本框只有一行,解决办法是: 调整属性: 然后开始填充:

c#无边窗体实现移动的两种方式

转载:http://blog.csdn.net/dxsh126/article/details/2940226 首先,要用到一个WimdowsAPI函数,因此必须引入 using System.Runtime.InteropServices; 命名空间; 然后,这里有两种方法,一种使用API, 一种不用,重写WndProc窗口过程的方式不需要API函数.另一个方法需要两个: SendMessage 像指定窗口过程发送消息 ReleaseCapture 释放鼠标捕获 最后是一些必要的常数声明,这些

菜鸟学习Spring——SpringMVC注解版前台向后台传值的两种方式

一.概述. 在很多企业的开法中常常用到SpringMVC+Spring+Hibernate(mybatis)这样的架构,SpringMVC相当于Struts是页面到Contorller直接的交互的框架也是界面把信息传输到Contorller层的一种架构,通过这个架构可以让我们把页面和Contorller层解耦,使得开发人员的分工更加明确. 二.代码演示. 1.首先配置SpringMVC环境. 1.1导入jar. 值得注意的是红色标记的commons-logging这个jar包一定得引入进去不然会

ASP.NET MVC 下拉框的传值的两种方式

以前使用WebForm变成时,下拉框传值只需直接在后台绑定代码就可以了.现在我们来看看在MVC中DropDownList是如果和接受从Controller传过来的值的. 第一种:使用DropDownList 控制器代码: public ActionResult Index() { //1.1查询YzSeriesEntity的数据 List<Model.YzSeriesEntity> seriesList = seriesBLL.LoadEnities().ToList(); //1.2将YzS