我需要一个表单作为单个实例一 这是一种“工具形式”,我不能用NEW启动它,因为它忘记了用户输入。 但是,在那种形式中,我有Sub New,我初始化了一些所需的东西。
如果我从主表单中调用此表单,请执行以下操作:
With frm_iemail()
.StartPosition = FormStartPosition.Manual
.FormBorderStyle = Windows.Forms.FormBorderStyle.None
.Show(Me)
End With
我收到错误:
'frm_iemail'是一种类型,不能用作表达式。
但如果我这样称呼它:
Dim eform As New frm_iemail()
With eform
etc...
然后没有错误,但在文本框中输入的文本将被删除不需要的内容。
在这里做些什么来获得所需的功能?
答案 0 :(得分:1)
如果您想使用已经处于活动状态的表单,则可以使用以下方法获取活动表单的对象。
Private Function GetActiveEmailForm() As frm_iemail
For Each lForm In System.Windows.Forms.Application.OpenForms
If (lForm.Name = frm_iemail.Name) Then
Return lForm
End If
Next
Return New frm_iemail
End Function
主要代码就是这样。
Dim eform As frm_iemail = GetActiveEmailForm
With eform
etc...
答案 1 :(得分:0)
(我认为)你的问题是这一行:
With frm_iemail()
您正在尝试在With语句中使用表单数组,该语句不起作用。删除末尾的括号,它应该可以工作。
在VB中,您只需引用表单的名称(您不必声明表单变量来使用它)
所以说我有一个表单名称frmTest
我可以这样做:
With frmTest
.FormBorderStyle = Windows.Forms.FormBorderStyle.None
.Show
End With
答案 2 :(得分:0)
将Private eform As New frm_iemail()
添加到调用类或表单(您将其称为“主窗体”),而不是在方法中,而是作为实例数据。这样它只会被创建一次。像这样:
Class MainForm : Form
Private eform As New frm_iemail()
Public Sub ExampleMethod()
With eform
.StartPosition = FormStartPosition.Manual
.FormBorderStyle = Windows.Forms.FormBorderStyle.None
.Show(Me)
End With
End Sub
End Class