我在一个名为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)
...等?
提前谢谢
答案 0 :(得分:0)
尝试指定课程的职责。您的Connecting
课程很可能负责维护与某事物的联系。此连接与UI无关,因此此类不应包含任何UI代码。但是,它可以提供一些自动确定的参数(这是我假设workorder
和ptw
)为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
答案 1 :(得分: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与业务内容分开。
答案 2 :(得分:0)
我真的很喜欢Nico的回答和解释。我提供这个作为另一种选择,因为我认为Tuples作为裤子口袋很方便。
vector<Control*>& GetControls()
{
return m_controlPtrs;
}
然后调用你的功能......
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