[英]Referencing UserControl's constituent TextBox from another form at design time vb.net
就在前面,我是用vb代码而不是c#编写的。
我已经检查了建议的论坛主题,但没有一个主题适用(我可以找到),所以就在这里。 我是vb.net的新手。 (来自vb6)
我正在创建一个用户control_1
,其中包含文本框和一个按钮。 Control_1
继承自另一个用户control_2
(一些文本框和日历表单按钮)。 当我按下按钮时,它将启动一个包含CalendarControl
的Calendar表单。
到目前为止工作正常。
现在,我需要将其Calendar窗体上的CalendarControl
值返回给未安装的用户control_1
。 我在这里说的是设计时间,用户Control_1
尚未坐在表单上。
我不想从它的就座表单触发日历表单,因为我希望封装此过程。
我将代码编写为基于表单的应用程序,以确保我的逻辑和应用程序正常工作。 现在,我正在尝试将代码和组成控件移入控件库。
我尝试从日历表单中调用Usercontrol_1
,但它不显示任何共享控件或属性。 我已经在For Each循环中尝试过Me.Parent.Controls
。 它找到了控件,但说我需要使用New关键字。 我尝试了新方法,但没有效果。 也许我误解了智慧在说什么。
在此先感谢您的时间和帮助。
在设计时,您不能单击打开另一个表单的按钮。 因此,我真的不确定您在设计时想要达到的目标。
我不知道您使用的压光机控件。 因此,我将解释使用DateTimePicker
的可能解决方案。 在日历表单上(我们将其fdlgCalender
添加一个属性,该属性允许公开访问日历控件的选定日期:
Public Property SelectedDate() As Date
Get
Return DateTimePicker1.Value
End Get
Set(ByVal value As Date)
DateTimePicker1.Value = value
End Set
End Property
在包含压延按钮的UserControl
,创建一个类似的属性。 这次我们使用可为空的日期,以指示未选择日期的情况
Public Property SelectedDate As Date?
现在,您可以像这样调用日历表单:
Dim fdlg As New fdlgCalender()
If SelectedDate.HasValue Then
fdlg.SelectedDate = SelectedDate.Value
Else
fdlg.SelectedDate = Today
End If
' Assuming that the dialog form sets the `DialogResult` correctly
If fdlg.ShowDialog() = DialogResult.OK Then
SelectedDate = fdlg.SelectedDate
Else
SelectedDate = Nothing
End If
现在,您可以通过SelectedDate
属性从用户控件外部访问日期。
(该代码未经测试)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.