开发者社区> jiankunking> 正文

在Form窗体中,this的应用

简介: 背景:         在BHHT_Bill界面中点击某个按钮时,弹出BHZX界面,并在BHZX界面中输入值,然后将BHZX界面中输入的值传递回BHHT_Bill界面。 在BHHT_Bill界面中: 属性: public string vsBZ = string.Empty;//用来接收弹出界面修改的值 某函数AA中的代码: BHGL.BHHT.BHZX bhzx = new BHG
+关注继续查看

背景:

        在BHHT_Bill界面中点击某个按钮时,弹出BHZX界面,并在BHZX界面中输入值,然后将BHZX界面中输入的值传递回BHHT_Bill界面。

在BHHT_Bill界面中:

属性:
public string vsBZ = string.Empty;//用来接收弹出界面修改的值
某函数AA中的代码:
BHGL.BHHT.BHZX bhzx = new BHGL.BHHT.BHZX();
bhzx.ShowDialog();
MessageBox.Show("某某操作成功!");

在BHZX界面中:

某函数BB中的代码:
BHHT_Bill bill = new BHHT_Bill();
bill.vsBZ = this.txtBZ.Text;//备注
this.Close();

         在代码跟踪的时候,打开BHZX界面并输入值后,bill.vsBZ中是有值的,但当执行到this.Close()后,返回到BHHT_Bill界面中时,函数不会执行MessageBox.Show("某某操作成功!"),而会跳转至声明公共变量属性的地方,开始执行,也就是会再次执行public string vsBZ = string.Empty,执行完变量属性后,才会到达MessageBox.Show("某某操作成功!")的语句,从而BHZX界面传值回BHHT_Bill界面失败!
        那么传值失败的原因是什么呢?
        原因在于:BHHT_Bill bill = new BHHT_Bill();这句话,因为这是新建了一个BHHT_Bill的实例,从而需要获取这个类的属性,也就是需要执行BHHT_Bill类中变量属性部分的代码。
        那么如何实现传值呢?

在BHHT_Bill界面中:

public string vsBZ = string.Empty;//用来接收弹出界面修改的值
某函数AA中的代码:
BHGL.BHHT.BHZX bhzx = new BHGL.BHHT.BHZX();
bhzx.bill = this;//传递窗体自身,而不是新的窗体
bhzx.ShowDialog();

在BHZX界面中:

变量属性:
public BHHT_Bill bill;
某函数BB中的代码:
bill.vsBZ = this.txtBZ.Text;//备注
this.Close();

小注:

        通过传递窗体自身,而不是新的窗体,可以实现ShowDialog()界面之间的传值(循环调用)。 

最佳实践:

        由this(即循环调用)来实现这种功能,其实可以通过一种更为简单、易懂的方式来实现。

代码如下: 

在BHHT_Bill界面中:

BHGL.BHHT.BHZX bhzx = new BHGL.BHHT.BHZX();           
bhzx.ShowDialog();
string vsTxtBZ = bhzx.psBZ;
bhzx = null;//注意清空

在BHZX界面中:

变量属性:
public string psBZ = string.Empty;
某函数中的代码:
psBZ = this.txtBZ.Text;


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
AliOS Things 完成第一个应用:Hello World
这样理解一下: VSCode编译代码后,调用ST-Link将程序烧写到单片机内部。 编译完成后,也会生成二进制文件,这样就可以通过各种方法下载了,比如批量生产时候用脱机下载器。
10925 0
SharePoint 2013 创建web应用程序报错"This page can’t be displayed"
错误描述 This page can’t be displayed •Make sure the web address http://centeradmin is correct. •Look for the page with your search engine. •Refresh the page in a few minutes. 发生过程   创建web应用程序,填写完基本信息以后点击确定,就是“这不会花费很长时间”的提示,然后就报错了,并且SharePoint和iis的日志中均没有记录错误。
1253 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20684 0
AliOS Things lorawanapp应用介绍
文本旨介绍AliOS Things的lorawanapp的示例,完成一个LoRaWAN网络的构建和数据传输,并通过该示例让大家对AliOS Things有一个初步的了解。
3419 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
16630 0
轻松搭建基于 Serverless 的 ThinkPHP 应用
本文演示了如何从零开始搭建一个 Serverless 的 ThinkPHP 的博客应用。如果不想接触 Nginx、Linux 等复杂感念,而且想要以极低的成本托管自己的应用,本文会是一个很好的开始。
1046 0
轻松搭建基于 Serverless 的 ThinkPHP 应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。
2819 0
+关注
726
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载