如何将对象传递给默认表单实例

时间:2019-03-21 15:30:09

标签: vb.net

我知道可以通过调用NameOfTheForm.show()在vb.net中打开表单的“默认实例”

如何将对象传递给默认的表单实例,以便可以处理该对象并使用它来填充表单文本框?

我尝试将参数添加到frmNames New方法,但不确定如何然后打开表单。旧样式实例化对象的工作原理:

        Dim DetailsForm As New frmOrder(oOrder)
        DetailsForm.Show()

但是我习惯使用:

frmOrder.show 

语法。

我应该使用top方法还是应该使用bottom方法并在表单上具有一个公共属性来接受对象?

错过了一种更好的方法吗?

谢谢

2 个答案:

答案 0 :(得分:1)

您的调用方法应使用您的第一个选项

'Careful about declaring this in a sub, because when that sub ends, the form might get closed.
'It might be best to declare this as an instance var (aka form-level var)
Private DetailsForm As frmOrder

'this could go in an event handler, or anywhere
DetailsForm = New frmOrder(oOrder)
DetailsForm.Show()

您将需要向DetailsForm添加一个构造函数:

Private _oOrder as OrderType

Public Sub New(oOrder As OrderType)
     'Best to save it to a private instance var and process it during Form_Load
     _oOrder = oOrder
End Sub

然后,当您的Form_Load()运行时,它可以使用您的私有实例var来填充您的TextBox,如您所愿。

第二种但不太雄辩的方法是在表单中添加一个公共属性,并在调用.Show()之后,可以分配一个值DetailsForm.OrderObject = oOrder,然后处理已传递的对象-在。

构造器方法更好,因为它可以“编译器检查”

答案 1 :(得分:0)

如果您确实必须使用默认实例。

在Form1

df = pd.DataFrame({'temperature': [89, 91, 93, 88, 90, 91, 91, 93]})

limit = 90
df['Above'] = ((df['temperature']>limit) & (df['temperature'].shift(1)>limit)).astype(int)
df

在Form2中

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Form2.myObject = New Coffee("Breakfast Blend", 7)
    Form2.Show()
End Sub