在窗体之间切换时如何保留窗体的控制值

用户名

它可以通过两种形式输入特定交易的所有信息。我希望能够在这两种形式之间来回切换,以保留在每种形式上输入的内容,直到单击“保存”按钮为止。

我认为我应该能够使用Form2.Show,Me.Hide,然后再使用Form1.Show,Me.Hide。我第一次去Form2时会经过Form2加载事件(这是合理的),但是对Form1上控件内容的任何了解都已经丢失了。即使Form1隐藏(而不是关闭),其控件的内容也消失了。为什么?

第二次我去Form2时,不会触发加载事件,因为Form2被隐藏了,此时所有Form1控件的内容都可用。因此,在Form1和Form2之间来回切换时,第二次访问Form2后,它可以按我的意愿工作。但是,我需要它在第一次和每次工作。

几天来,我一直试图理解这一点。我已经注释掉几乎每一行代码,一步步遍历代码,谷歌搜索直到脸色发青(对此有很多文章),但我仍然不知道为什么会发生这种行为。

谁能解释这个现象?或者更好的告诉我要完成这项工作需要做什么。

我在转到Form2的Form1按钮后面有此代码

If Form2 Is Nothing Then
    Dim Form2 As New Form2
End If
Form2.Show()
Me.Hide()

并将此代码隐藏在Form2按钮后面,以返回到Form1

Form1.Show
Me.Hide
普萨·庞杰伦德拉普

这可能就是您所缺少的:

Class Form1
     Private f2 As Form2       ' this is Form1's reference to the
                               ' form2 instance

稍后,当您单击以转到form2时,您的原始代码只需要进行一些小的调整:

If f2 Is Nothing Then
    f2 = New Form2(Me)             ' set declared variable to new instance   
End If
F2.Show()
Me.Hide()

在这种情况下,Form1使用您在使用构造函数之前显示的技巧传递了引用

Sub New(frm As Form1)         ' this is in Form2 only
   f1 = frm               
End Sub

您不需要在Form1中使用它,因为他/他正在创建自己的f2对象引用。

您原始代码中的主要问题是:Dim Form2 As New Form2您每次都在创建一个新的Form2(我怀疑它驻留在一个事件或子视图中)。那些新的instances不知道以前实例中的控制值。声明F1F2如图所示,将为其提供模块/表单级别Scope

Dim声明一个变量及其类型。f1是Form1类型的。如果它是对象变量,则不会创建对象

New创建对象类型(引用类型)的实例。这直接与Sub New该类中方法有关。当您使用时New,会Sub New被调用,因此任何特殊的事情都可以在那发生。Integer这样的值类型不需要创建或实例化,只需声明即可。

你声明(Dim)一个变量决定了它Scope如果在Sub中执行此操作,则变量或对象仅存在于该Sub中。如果您在表单/类级别执行此操作,则它具有表单/类级别的范围。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何每5秒在值之间切换TextView

如何在点击时在真/假之间切换

切换标签/路线时如何保留表格数据?

vim:使用:bn在缓冲区之间切换时保留光标位置

第一次放置在窗体上时如何获得WinForms自定义控件的默认值

如何使用calc()在颜色值之间切换?

每隔5分钟自动切换一次窗体之间的窗口

在C#窗体之间切换时的闪烁效果

使用BottomNavigationView在片段之间进行切换时保留片段状态

如何获取切换标志值和标志切换之间的行总和

在片段之间切换时如何保存地图状态?

如何在嵌套对象中的值之间切换

在活动之间切换时如何避免出现白屏

在formarray控件和另一个窗体控件之间切换是否无法在angular中工作?

在窗体上的控件中创建值

在React中的视图之间切换时保留输入值

在2个字段之间切换连续子窗体的排序访问VBA

在窗体之间切换时出现System.StackOverflowException

如何在2个Windows窗体之间来回切换

Windows窗体中的切换开关控件

根据字段值在窗体上的addError

'gsettings' 在 Ubuntu 18.04 上设置滚轮以在窗口之间切换时抛出错误

在片段之间切换时如何处理相机?

Windows 窗体 - 在窗体加载时重置整数

在 Windows 窗体之间切换时的闪烁效果

PyQt5 在窗口之间切换

如何在整数之间切换值?

在视图控制器之间切换时保留按钮状态

在 Visual C# 中的两个 Windows 窗体之间切换和通信?