我的控件有一个List<Point>
作为属性,在构造该控件时需要设置该属性。单个Point
必须在窗体上单击鼠标,并且必须在Visual Studio的设计模式下进行。
现在,我的想法是在创建控件时打开一个新表单,这将复制原始表单,在新表单上,我可以单击一点,注册点,将它们添加到列表属性中,并在完成后关闭新表单。但我似乎无法将原来的Forms属性应用于新的,我想这是因为它在运行时不会发生。
这就是我到目前为止所拥有的(我知道不多,这是关于原理的):
创建控件时显示新表单:
Public Sub New()
InitializeComponent()
Dim myForm As Form = Me.FindForm()
Dim newForm As New newForm(myForm)
scrInput.Show()
End Sub
新形式:
Public Class SourceForm
Private additionlHeight As Integer = 50
Public Sub New(ScrSource As Form)
InitializeComponent()
Me.Height = ScrSource.Height + additionlHeight
Me.Width = ScrSource.Width
Me.BackColor = ScrSource.BackColor
End Sub
End Class
新表单上没有更新的高度、宽度或背景颜色…知道吗?
只是为了文档:
看来我设法解决了我的问题。我尝试了很多不同的事情,但我相信在control
的Load event
中创建新的Form
最终解决了这个问题。Refresh()
方法也有帮助。
这是工作代码。用于控制:
Private Sub myControl_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim myForm As Form = Me.FindForm()
Dim controlInputForm As New myControlInputForm(myForm)
controlInputForm.Show()
End Sub
对于新的Form类:
Public Class myControlInputForm
Private additionlHeight As Integer = 50
Private sourceForm As Form
Public Sub New(sourceForm As Form)
InitializeComponent()
Me.sourceForm = sourceForm
Me.Height = Me.sourceForm.Height + additionlHeight
Me.Width = Me.sourceForm.Width
Me.BackColor = Me.sourceForm.BackColor
Me.Refresh()
End Sub
End Class
编辑:键入错误。