我知道可以通过调用NameOfTheForm.show()在vb.net中打开表单的“默认实例”
如何将对象传递给默认的表单实例,以便可以处理该对象并使用它来填充表单文本框?
我尝试将参数添加到frmNames New方法,但不确定如何然后打开表单。旧样式实例化对象的工作原理:
Dim DetailsForm As New frmOrder(oOrder)
DetailsForm.Show()
但是我习惯使用:
frmOrder.show
语法。
我应该使用top方法还是应该使用bottom方法并在表单上具有一个公共属性来接受对象?
错过了一种更好的方法吗?
谢谢
答案 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