在设计时从另一个表单引用 UserControl 的组成 TextBox vb.net

Posted

技术标签:

【中文标题】在设计时从另一个表单引用 UserControl 的组成 TextBox vb.net【英文标题】:Referencing UserControl's constituent TextBox from another form at design time vb.net 【发布时间】:2013-02-16 16:27:46 【问题描述】:

首先,我是用 vb 代码编写的,而不是 c#。

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

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

到目前为止工作正常。

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

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

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

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

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

【问题讨论】:

不客气。另外,由于您是 *** 的新手,我想通知您,您可以通过勾选答案旁边的勾号来为好的答案投票并接受对您帮助最大的答案。在本网站上,点赞或接受的答案都算作“感谢”。 【参考方案1】:

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

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

(代码未测试)

【讨论】:

以上是关于在设计时从另一个表单引用 UserControl 的组成 TextBox vb.net的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一个表单中引用图片框(从另一个表单更改图片框)

如何将我的UserControl从另一个项目(Dll)添加到我的WPF解决方案?

如何在单击时从另一个兄弟组件中增加一个值?

在构建 R 包时从另一个 Rcpp 函数调用 Rcpp 函数

如何在将 Tablayout 与 viewpager 一起使用时从另一个片段调用 AsyncTask?

登录时从另一个活动启动应用程序