在两个打开的表单之间传递数据

时间:2018-02-05 21:36:37

标签: vb.net winforms variables

我知道这已经被多次回答了,我实际上正在使用似乎正在运行的代码,但我似乎无法将实际数据显示在接收表单中。

在发送表单中,我选择树状菜单中的一个项目,该项目触发事件以打开接收表单然后传递数据。我在接收代码中加了一个断点,可以看到数据应用于变量。我将该变量应用于文本框,但它不会出现在打开的表单上。

以下是发送表单中的代码。我首先检查表单是否打开。我传递的变量是字符串strControl。

        If Application.OpenForms.OfType(Of Guidance_Info).Any() Then
            Dim f1 As New Guidance_Info()
            Guidance_Info.LoadGuidance_Info(strControl)
        Else
            Dim f1 As New Guidance_Info()
            Guidance_Info.LoadGuidance_Info(strControl)
            f1.Show()
        End If

以下是接收表格中的代码。我首先将变量应用于表适配器,然后是文本框,然后是消息框。显示数据的唯一项是消息框。使用断点我可以看到变量被传递给文本框和表适配器。

        Friend Sub LoadGuidance_Info(ByVal ControlID As String)
            Me._800_53_CtrlTableAdapter.FillByControl(Me.AssessGuidanceDataSet1._800_53_Ctrl,
                                              ControlID)

            Me.lblControl.Text = ControlID

            MsgBox(ControlID)

        End Sub

从这张图片中可以看出变量是正确接收的: Friend sub LoadGuidance_Info

我也尝试使用f1.ShowDialog()而不是f1.Show()但得到了相同的结果。对话框的问题,在关闭接收表单之前,您无法使用发送表单。

任何帮助将不胜感激:

1 个答案:

答案 0 :(得分:0)

您的问题与传递数据无关,而是您传递给它的内容。

您要查找一个打开的表单实例,但无论您是否找到它,都可以创建一个max(subset(drought_df, drought)$streak) # subset drought_df for only drought periods [1] 6 表单实例,将数据传递给默认表单实例,然后显示({ {1}})您创建的表单实例。最后,您有多达3个相同形式的实例:

New

#2和#3都不可能是可能展示的那个。不只是检查一个实例的集合,而是检查它(使用更多的惯用命名):

New