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

Posted

技术标签:

【中文标题】在后台刷新 vb6 表单而不会丢失用户输入的数据【英文标题】:refresh vb6 form in background without losing user entered data 【发布时间】:2012-12-26 04:28:56 【问题描述】:

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

例如将人的年龄从 65 岁更改为 64 岁。我进行此更改并保存它。保存成功,我卸载表单返回Form1。但是,我必须再次单击“显示”以刷新文本框中显示的数据,以确保更改可见。我不知道如何刷新此表单,因此用户不必单击“显示”即可使用新值重新填充文本框。有人可以帮忙吗?我不能只创建 Form1 的新实例,因为如果我这样做了,则人员 ID 字段将是空白的。

谢谢!

短版:如何刷新表单以获取最新数据,同时仍获取相关人员 ID。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案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 

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:
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 的答案并不太相似。

【讨论】:

以上是关于在后台刷新 vb6 表单而不会丢失用户输入的数据的主要内容,如果未能解决你的问题,请参考以下文章

添加到 HTML 表单而不会丢失 Javascript 中的当前表单输入信息

如何刷新表单中的下拉字段而不使用ajax刷新整个表单?

Asp.Net MVC 2中会话超时时的确认

整么用js保存刷新前的数据,也就是刷新后的数据不是刚进入该页面的数据而是刷新前的数据。

如何在 ASP.NET MVC 中 RedirectToAction 而不会丢失请求数据

加密用户数据而不会丢失 android 应用程序中的登录用户