Vb.net 通过在窗体上单击鼠标设置自定义控件的自定义属性(在设计模式下)
我的控件有一个Vb.net 通过在窗体上单击鼠标设置自定义控件的自定义属性(在设计模式下),vb.net,forms,mouse,point,custom-properties,Vb.net,Forms,Mouse,Point,Custom Properties,我的控件有一个列表作为属性,在构造该控件时需要设置该属性。单个点必须从鼠标单击表单中获取,并且必须在Visual Studio的设计模式中进行 现在我的想法是在创建控件时打开一个新表单,该控件将复制原始表单,在新表单上我可以单击一点,注册点,将它们添加到列表属性,完成后关闭新表单。但我似乎无法将原始表单属性应用于新表单,我猜这是因为它在运行时不会发生 这就是我到目前为止所拥有的(我知道这并不多,是关于原则): 创建控件时显示新窗体: Public Sub New() Initia
列表
作为属性,在构造该控件时需要设置该属性。单个点
必须从鼠标单击表单中获取,并且必须在Visual Studio的设计模式中进行
现在我的想法是在创建控件时打开一个新表单,该控件将复制原始表单,在新表单上我可以单击一点,注册点,将它们添加到列表属性,完成后关闭新表单。但我似乎无法将原始表单属性应用于新表单,我猜这是因为它在运行时不会发生
这就是我到目前为止所拥有的(我知道这并不多,是关于原则):
创建控件时显示新窗体:
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
在新表单上看不到更新的高度、宽度或背景颜色。。。有什么想法吗?只是为了文档的缘故: 看来我解决了我的问题。我尝试了许多不同的方法,但我相信在
控件的加载事件中创建新的表单
最终解决了这个问题。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
对于新表单类:
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
编辑:键入错误。设置高度、宽度和背景色后,请尝试Me.Refresh()
。如果这仍然不起作用,请添加Application.DoEvents()
。或者在SoruceForm中添加一个类变量ScrSource
,并在构造函数中进行设置。但是,与其调整构造函数中的属性,不如在SoruceForm的Load
事件中设置高度、宽度和背景色。如果您正确定义了列表(点)
属性,VS/IDE将为您启动集合编辑器。@Alex B.已完成所有建议,但仍然不起作用。@对不起,我不知道两者之间有什么区别。它确实向我显示了集合编辑器,但该编辑器并没有完成我需要的功能(每个鼠标点击注册点)。无论如何,谢谢你的帮助!