将函数返回值从类返回到vb.net中的表单

问题描述 投票:0回答:3

我在一个名为connecting.vb的类中有一个函数

Public Function bring_it(ByVal a As Integer) As String
some code in here .....
                Form3.Show()
                Form3.TextBox1.Text = dl.Item("workorder").ToString
                Form3.TextBox2.Text = dl.Item("ptw").ToString

end function 

在form3加载时我希望文本框传递值

    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 dim al as new connecting 
al.bring_it(a) 
end sub

我不得不在bring_it函数中使用form3.show(),因为当form3加载时它不显示传递的值,但问题是我得到两个窗口一个有所需的值而另一个是空的

当我按下按钮时我需要显示form3(form3是一个带文本框的编辑窗口)

我也想改变bring_it函数输出一个数组,但我不知道怎么做...我不知道如何使用那个输出数组让我们假设结果数组是这个

st(3)={"hell","yes","no") 

当我打电话给那个功能 al.bring_it(a)如何获得例如st(1)st(2) ...等分别?提前致谢

vb.net forms function class
3个回答
0
投票

尝试指定类的职责。你的Connecting课程很可能负责保持与某事物的联系。此连接与UI无关,因此此类不应包含任何UI代码。但是,它可以提供一些自动确定的参数(这是我假设workorderptw)作为properties,可能是只读的。

Class Connecting
    '...
    Public ReadOnly Property WorkOrder As String

    Public Function BringIt(ByVal a As Integer) As String
        '...
        _WorkOrder = dl.Item("workorder").ToString()
        '...
    End Function
End Class

然后,您的表单类(顺便说一句,请给它一个合理的名称)可以访问这些属性并将它们分配给它的文本框:

Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    dim al As New connecting 
    al.bring_it(a) 
    WorkOrderTextBox.Text = al.WorkOrder
    '...
End Sub

0
投票

您有几个选项可以从函数中返回多个值。这是一个返回数组的示例。

Public Function bring_it(ByVal a As Integer) As String()
some code in here .....
                Form3.Show()
                Form3.TextBox1.Text = dl.Item("workorder").ToString
                Form3.TextBox2.Text = dl.Item("ptw").ToString

    Return New String(){"a","b","c"}
end function

调用它看起来像:

Dim bringReturn() as String = bring_it(a)

您可以访问bringReturn(0),带返回(1)和带回程(2)。

这是一个返回元组的示例。

Public Function bring_it(ByVal a As Integer) As Tuple(Of String, String, String)
some code in here .....
                Form3.Show()
                Form3.TextBox1.Text = dl.Item("workorder").ToString
                Form3.TextBox2.Text = dl.Item("ptw").ToString

    Return New Tuple(Of String, String, String)("a", "b", "c")
end function

调用它看起来像:

Dim bringReturn as Tuple(Of String, String, String) = bring_it(a)

您可以通过bringReturn.Item1,bringReturn.Item2和bringReturn.Item3访问它。

Nico的建议也不错,但与我的回答是分开的。您想要将GUI与业务内容分开。


0
投票

我真的很喜欢Nico的回答和解释。我提供这个作为替代品,因为我觉得元组作为裤子口袋很方便。

Public Function bring_it(ByVal a As Integer) As (WorkOrder As String, PTW As String)
        Dim strWorkOrder As String = dl.Item("workorder").ToString
        Dim strPTW As String = dl.Item("ptw").ToString
        Return (strWorkOrder, strPTW)
End Function

然后调用你的功能......

Dim result = bring_it(x)
txtWorkOrder.Text = result.WorkOrder
txtPTW.Text = result.PTW
© www.soinside.com 2019 - 2024. All rights reserved.