我有一个名为"ucSETTINGS"的用户控制表单,其中有一个文本框,一旦按钮被点击,文本框中的文本将从另一个用户控制表单名称"ucITEMS">
添加到组合框中我试过这个代码,但它不工作(cboCategory是ucITEMS中的组合框名,txtNAME是ucSETTINGS中的文本框名)
Private Sub btnSAVE_Click(sender As Object, e As EventArgs) Handles btnSAVE.Click
Dim category As New ucITEMS()
category.cboCATEGORY.Items.Add(txtNAME.Text)
End Sub
有人能帮帮我吗?
在这种情况下,默认情况下用户控件不知道彼此,应该保持这种状态。源UC只是公开了一个接口,让任何正在观看的人在其认为合适的情况下使用它。这意味着当某些事情发生时引发一个事件,并通过属性(例如
)公开所需的数据。Public Class SourceControl
Public ReadOnly Property TextBox1Text As String
Get
Return TextBox1.Text
End Get
End Property
Public Event Button1Click As EventHandler
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
OnButton1Click(EventArgs.Empty)
End Sub
Protected Overridable Sub OnButton1Click(e As EventArgs)
RaiseEvent Button1Click(Me, e)
End Sub
End Class
TextBox
的Text
通过属性公开,当用户单击Button
时,UC引发一个事件。
目标UC为要提供的新项目提供了一个接口,但是它将它们添加到自己的ComboBox
中,例如
Public Class DestinationControl
Public Sub AddItemToComboBox1(item As Object)
ComboBox1.Items.Add(item)
End Sub
End Class
窗体然后扮演中间角色,处理事件,获取属性并调用方法:
Private Sub SourceControl1_Button1Click(sender As Object, e As EventArgs) Handles SourceControl1.Button1Click
DestinationControl1.AddItemToComboBox1(SourceControl1.TextBox1Text)
End Sub
显然,你应该用更具体、更合适的名字,而不是我一般的命名。