0

就在前面,我正在用 vb 代码编写,而不是 c#。

我已经检查了建议的论坛主题,但没有一个适用,(我可以找到)所以就在这里。我对 vb.net 比较陌生。(来自vb6)

我正在创建一个control_1包含文本框和按钮的用户。Control_1从另一个用户继承control_2(一些文本框和日历表单按钮)。当我按下按钮时,它会启动一个包含CalendarControl.

到目前为止工作正常。

现在我需要将CalendarControl其日历表单上的值返回给未就座的用户control_1。我在这里谈论设计时间,用户Control_1还没有坐在表单上。

我不想从它就座的表格中触发日历表格,因为我希望封装这个过程。

我将代码编写为基于表单的应用程序,以确保我的逻辑和应用程序正常工作。现在我正在尝试将代码和组成控件移动到控件库中。

我试过Usercontrol_1从我的日历表单中调用,但它没有显示我的任何共享控件或属性。我已经尝试Me.Parent.Controls过 For Each 循环。它找到了控件,但说我需要使用 New 关键字。我尝试了新的,它没有工作。也许我误解了智能在说什么。

提前感谢您的时间和帮助。

4

1 回答 1

0

在设计时,您不能单击打开另一个表单的按钮。因此,我真的不确定您在设计时要实现什么。

我不知道您使用的日历控件。因此,我将解释使用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属性从用户控制之外访问日期。

(代码未经测试)

于 2013-02-16T17:35:45.533 回答