在后台刷新vb6表单而不会丢失用户输入的数据

时间:2013-01-11 14:59:06

标签: forms vb6 refresh

我正在使用一些旧的VB6代码并且有一个我想要纠正的场景。我有一个表单,允许您输入人员ID(使用顶部的文本框中的租用),然后单击“显示”它在同一表单上的文本框中列出约会。还有一个按钮可以加载一个新表单,允许用户编辑显示的数据并保存更改。

E.g。将年龄从65岁改为64岁。我做了这个改变,然后保存。保存成功,我卸载表单以返回到Form1。但是,我必须再次单击“显示”以刷新文本框中显示的数据,以确保更改可见。我无法弄清楚如何刷新此表单,因此用户无需单击“显示”以使用新值重新填充文本框。有人可以帮忙吗?我不能只创建一个Form1的新实例,因为如果我这样做,那么人员ID字段将是空白的。

谢谢!

简短版本:如何在获取相关人员ID的同时刷新表单以获取最新数据。

4 个答案:

答案 0 :(得分:3)

这里没有足够的信息来回答你的问题。您在这种情况下使用的一般模式如下:

  1. SearchForm启动ViewForm。
  2. ViewForm启动EditForm。当ViewForm构造其EditForm实例时,它会将Me传递给EditForm(可能通过设置EditForm.Parent)。
  3. 当EditForm的Save按钮单击事件触发时,它会调用Parent.ReloadData(其中Parent是启动EditForm的ViewForm)。

答案 1 :(得分:2)

这是应该有效的方法。在编辑器中有一个公共属性,返回表单是否被取消。 (。取消)。您将拥有一个对象,其中包含您尝试更改其年龄的人的属性。然后它很简单。主要代码:

dim oPerson as clsPerson
dim oFrm as frmAgeEditor

set oPerson = GetCurrentPerson()
set oFrm = new frmAgeEditor


with oFrm
    set .Person = oPerson
    .Show vbModal

    if not .Cancelled then
        ' Update Main form with the contents of oPerson

    end if

end with 

答案 2 :(得分:0)

您可以在更新后立即调用“显示”功能。

答案 3 :(得分:0)

Call Me.frmParent.Refresh

我用它来刷新屏幕而不会丢失数据。 我不得不深入研究许多旧代码来解决这个问题。这部分是很久以前写的,并且效果很好。

Public Sub Refresh()
Call cmdDetails_Click
If tvwScreeningSchedule.Nodes.Count > 0 Then
    tvwScreeningSchedule.SelectedItem = tvwScreeningSchedule.Nodes(1)
    Call tvwScreeningSchedule_Click
End If

End Sub

这是一个非常具体的功能,“cmdDetails_Click”包含很多自定义验证,但它与AngryHackers的答案并不太相似。