首页 > 编程语言 >c# winfrom 窗体传值的六种传值方式及实例

c# winfrom 窗体传值的六种传值方式及实例

时间:2023-10-24 16:12:47浏览次数:38  
标签:f2 textBox1 c# winfrom value Form2 Form1 窗体 传值

1、通过构造函数

特点:传值是单向的(不可以互相传值),实现简单

实现代码如下:

在窗体Form2中

int value1;

string value2;

public Form2 ( int value1 , string value2 )

{

InitializeComponent ( );

this.value1 = value1;

this.value2 = value2;

}

在窗体Form1中这样调用

1

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;

}

标签:f2,textBox1,c#,winfrom,value,Form2,Form1,窗体,传值
From: https://www.cnblogs.com/chibangze/p/17785056.html

相关文章

  • Codeforces 1862G 题解
    传送门题解因为有这个操作:将序列\(a\)加上\(\{n,n-1,\cdots,1\}\),考虑差分。那么显然每次操作会将差分数组中的每个元素减去\(1\),如果差分数组中有\(0\),就会把\(0\)删除。所以可以发现差分数组中剩下的一定是操作前的最大值。由于操作后最大值还是最大值,最小值仍......
  • OracleADDM自动诊断监视工具介绍
     一.ADDM概述 ADDM(AutomaticDatabaseDiagnosticMonitor)是植入Oracle数据库的一个自诊断引擎.ADDM通过检查和分析AWR获取的数据来判断Oracle数据库中可能的问题.   在Oracle9i及之前,DBA们已经拥有了很多很好用的性能分析工具,比如,tkprof、sql_trace、statspack、......
  • OracleCBO与RBO
    Oracle的优化器有两种优化方式: 基于规则的优化方式:Rule-BasedOptimization(RBO)基于成本或者统计信息的优化方式(Cost-BasedOptimization:CBO)     RBO方式:优化器在分析SQL语句时,所遵循的是Oracle内部预定的一些规则。比如我们常见的,当一个where子句中的一列有索引......
  • idea禁用双击ctrl
    Runanything|IntelliJ IDEADocumentationDisabledoublemodifierkeyshortcuts......
  • Centos7 安装/卸载 vsftpd
    安装vsftpd[root@localhost~]#yum-yinstallvsftpd查看安装路径[root@localhost~]#whereisvsftpdvsftpd:/usr/sbin/vsftpd/etc/vsftpd/usr/share/man/man8/vsftpd.8.gz查看目录[root@localhost~]#ll/etc/vsftpd/-rw-------1rootroot125Mar222017ftpuser......
  • Centos7 - ftp login 530
    问题描述[root@localhostdevops]#ftp192.168.18.12938001Connectedto192.168.18.129(192.168.18.129).220(vsFTPd3.0.2)Name(192.168.18.129:root):test3331Pleasespecifythepassword.Password:530Loginincorrect.Loginfailed.查看/etc/vsftpd/ftpusers-......
  • Citrix DDC更新VCSA证书指纹新方法
    当服务器证书指纹发生变化后,交付组内的虚拟桌面电源会显示未知状态,就此需要使用powershell命令更换DDC新vCenter证书的指纹。登录vCenter查看服务器证书指纹信息使用powershell命令更换DDC托管vCenter的指纹信息方法。#例如当前指纹信息lsXDHyp:\Connections\#如下为命令输入结......
  • PC3221单节锂电池充电器芯片ESOP8封装高耐压输入
    特性输入耐压28V输出耐压15V输入过压保护7V短路保护高达1A可编程充电电流精度1%的4.2V预设充电终止电压防电池反接无需MOSFET、检测电阻或隔离二极管在无过热危险的情况下实现充电速率最大化的热调节功能ESOP8/DFN2x2-8/DFN2x3-8/DFN3x3-8封装符合RoHS标准描述PC3221是......
  • C++算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例
    相关源码测试用例下载包括4个压缩包,初始代码,实现前缀和,实现前缀积,实现前缀异或。都是在前者的基础上修改的。原理长度为n的数组nums,共有n+1个以nums[0]开始的子数组。索引范围分别为[0,i),i取值区间[0,n]。preSum[i]记录子数组[0,i)的和。比如:nums={1,2,3,4},则preSum={0,1,3,6......
  • C++前缀和算法应用:和至少为 K 的最短子数组的原理、源码及测试用例
    题目给你一个整数数组nums和一个整数k,找出nums中和至少为k的最短非空子数组,并返回该子数组的长度。如果不存在这样的子数组,返回-1。子数组是数组中连续的一部分。示例1:输入:nums=[1],k=1输出:1示例2:输入:nums=[1,2],k=4输出:-1示例3:输入:nums=......