繁体   English   中英

在设计时从vb.net的另一种形式引用UserControl的组成TextBox

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM