我的程序中有2个表单。 Form1上有一个选项卡控件,其中一个选项卡上有一大堆标签。 Form2上有几个文本框和下拉列表。 Form1上有一个按钮,它将Form2作为普通表单打开,而不是对话框。
Form1中的代码在加载时从MySQL数据库填充其上的标签。此代码位于表单加载时调用的单独的公共子中。
我要做的是填写Form2上的一些框,当此表单关闭时,它会使用这些值更新数据库(正常工作),然后这些值显示在Form1上。我可以让Form2运行填充标签的Form1中的代码,但问题是Form1上的标签实际上从未改变过。我尝试过多种方法,包括在标签上调用refresh,尝试从Form2而不是Form1更改标签,但它们永远不会更新。标签的.text值正在更新为新值,我已经通过调试检查了这一点并在正确的点停止以查看值是什么。
任何想法?我认为这可能与Form2调用代码的事实有关,因为它无法更改Form1上的标签。
代码:
Form1(AECSurveyForm)
Private Sub AECSurvey_Load(sender As Object, e As EventArgs) Handles MyBase.Load
LoadMeterData()
End Sub
Public Sub LoadMeterData()
Dim AECMeteringDataAdapter As New AECMeteringDataTableAdapter
Dim AECMeteringData As AECMeteringDataDataTable
AECMeteringData = AECMeteringDataAdapter.GetAECMeterDataBySurveyUniqueIdentifier(AECGlobalValues.CurrentSurveyUniqueIdentifier)
'utility
Meter1UtilityLabel.Text = AECMeteringData(0)("Utility1")
End Sub
Private Sub MeterButton1_Click(sender As Object, e As EventArgs) Handles Meter1Button.Click
If Not Application.OpenForms().OfType(Of AECMeteringDataForm).Any Then
AECMeteringDataForm.GetData(AECGlobalValues.CurrentSurveyUniqueIdentifier, 1)
AECMeteringDataForm.Show()
End If
End Sub
Form2(AECMeteringDataForm)
Private Sub AECMeteringDataForm_FormClosing(sender As Object, e As EventArgs) Handles MyBase.Closing
Dim AECMeteringDataAdapter As New AECMeteringDataTableAdapter
Dim AECMeteringData As AECMeteringDataDataTable
AECMeteringData = AECMeteringDataAdapter.GetAECMeterDataBySurveyUniqueIdentifier(AECGlobalValues.CurrentSurveyUniqueIdentifier)
AECMeteringData(0)("Utility1") = UtilityComboBox.SelectedItem.ToString
AECMeteringDataAdapter.Update(AECMeteringData)
AECSurveyForm.LoadMeterData()
End Sub