【问题标题】:Set the textbox value of usercontrol from Main winForm Button从主 winForm 按钮设置用户控件的文本框值
【发布时间】:2016-05-11 12:18:29
【问题描述】:

我有一个主窗体“frmMaster”,其中包含一个按钮“btnSet”, 在这个主窗体中,我在用户控件上放置了一个面板控件, 在这个用户控件上有一个文本框, 我的问题是当我单击主窗体中的按钮“btnset”时如何设置此文本框的值, 例如:当我从主窗体单击“btnset”时,用户控件上的文本框的值将是“欢迎”

在 userControl 我放:

Public Property TextBoxTxt () As String
    Get
        Return txtText1.Text 
    End Get
    Set(value As String)
        txtText1.Text = value
    End Set
End Property

在主窗体上我放入按钮:

 Dim uc As New ucControl1         
    uc.txtText1.Text= "Welcome!"

【问题讨论】:

  • 你有任何代码要显示吗?我无法理解你的问题。
  • 不,你必须写:uc.TextBoxTxt= "Welcome!"

标签: vb.net winforms user-controls


【解决方案1】:

在用户控件中:

Public Property TextBoxTxt () As String
    Get
        Return Me.textbox.Text 
    End Get
    Set(value As String)
        Me.txtebox.Text = value
    End Set
End Property

在您甚至单击“btnset”按钮时:

    Private Sub btnset_Click(sender As Object, e As EventArgs) Handles btnset.Click
             Dim uc As New MyUserControl

            uc.TextBoxTxt ="Welcome!"

        End Sub

【讨论】:

  • 试试 frmMaster.UserControlName.TextBox1.Text="Welcome!"
  • 我把它放在我的问题中
【解决方案2】:

你的 UserControl 必须是这样的:

Public Class UserControl1
        Private Sub UserControl1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        End Sub
        Public Property TextBoxTxt() As String
            Get
                Return txtText1.Text
            End Get
            Set(value As String)
                txtText1.Text = value
            End Set
        End Property
    End Class

在你的MainForm中添加一个按钮“btnSet”和一个面板“Panel1”,所以你在MainForm中的代码必须是这样的:

Public Class frmMaster

    Private Sub btnSet_Click(sender As Object, e As EventArgs) Handles btnSet.Click
        Dim uc As New UserControl1
        uc.txtText1.Text = "Welcome!"
        Panel1.Controls.Add(uc)
    End Sub

    Private Sub frmMaster_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub
End Class

我为你创建了一个简单的exemple

【讨论】:

  • @Jassimi 如果您已经在 MainForm 中添加了一个控件,您应该只写 ucControl1.TextBoxTxt="Welcome!" ,看看我的第二个答案,它没有“Dim uc As New ucControl1”
  • 如果我这样写,我会得到这个错误“对象引用未设置为对象的实例”
  • 好的@Jassim我已经编辑了我的答案我如何一步一步地告诉你。这是一个例子的链接
【解决方案3】:

您需要将public 属性添加到用户控件,例如

Public Property TextBoxMessage As String
    Get
        Return textbox.Text
    End Get
    Set(ByVal value As String)
        textbox.Text = value
    End Set
End Property

然后你可以在你的 frmMaster 中显示一条消息:

usercontrol.TextBoxMessage = "Welcome!"

【讨论】:

  • 由于 Beldi 发布了相同的答案(但在 VB 中),并且由于您的代码存在类似问题,我将把您交给 Beldi 处理。 :)
  • @Ulric 当我打开答案页面写我的答案时,你已经发布了答案,对不起!
  • @Beldi 嗨。虽然我的 C# 版本很有用,但你的 VB 版本更适合这个问题。所以这一切都很好。 :) {edit} 但是现在我的帖子已经翻译成VB了。
猜你喜欢
  • 1970-01-01
  • 2011-06-15
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多