zl程序教程

您现在的位置是:首页 >  工具

当前栏目

在Form窗体中,this的应用

应用 this Form 窗体
2023-09-14 09:03:18 时间
        在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;



Window Form 控件基础 在开始正式介绍如何开发自定义控件之前,有必要先了解一下控件开发的基础知识。下面从控件的概念、分类和开发模式上对控件做一个基本的概述。
easyui-combobox绑定回车事件相关 去掉combobox回车内容不匹配清空输入项 问题描述:easyui的combobox插件,输入的内容如果和选项不匹配时,按下回车会导致输入的内容被清空。 解决办法:要解决回车时,combobox输入内容和可选项目不匹配时清楚输入内容的问题,需要修改源代码,找到回车处理函数代码,注释掉或者退出代码执行。