通过鼠标单击窗体(在设计模式下)设置自定义控件的自定义属性



我的控件有一个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

新表单上没有更新的高度、宽度或背景颜色…知道吗?

只是为了文档:

看来我设法解决了我的问题。我尝试了很多不同的事情,但我相信在controlLoad 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

编辑:键入错误。

相关内容

  • 没有找到相关文章

最新更新