【问题标题】:Pass value from Usercontrol to Form将值从用户控件传递到表单
【发布时间】:2018-10-30 20:01:51
【问题描述】:

我用文本框创建了一个 usercontrol1。在我的表单中,我添加了一个用户控件(带有文本框的 usercontrol1)和一个文本框。我已经知道如何将值从 Form 传递给 Usercontrol。

Form Code
public string ID
    {
        get { return textBox1.Text; }
    }
private void textBox1_TextChanged(object sender, EventArgs e)
    {
        userControl11.ID = ID;
    }

Usercontrol Code
public string BorrowerID
    {
        set { textBox1.Text = value; }
    }

但是不知道如何将值从Usercontrol的textBox传递到Form的textbox? 我发现了如何从用户控件关闭表单。

((Form)this.TopLevelControl).Close();

更改父窗体颜色

this.ParentForm.BackColor= Color.Red;

我将如何实现类似的方法或其他方法将值从用户控件传递到表单?

((Form)this.TopLevelControl).ID = ID;

this.ParentForm.ID= ID;

【问题讨论】:

标签: c# winforms user-controls


【解决方案1】:

我在一个新项目中创建了 UserControl1 并将其引用到包含表单的项目中,而不是直接在表单的项目中添加 UserControl,这就是事情变得复杂的原因。

现在在这里将值从 UserControl 传递给 Form

用户控制

public string ID2
{
    get { return textBox1.Text; }
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
    var textBoxContent = this.textBox1.Text;
    var parent = this.Parent as Form1;
    parent.ID2 = ID2;  
}

Form1

public string ID2
{
    set { textBox1.Text = value; }
}

【讨论】:

    【解决方案2】:

    您可以在您喜欢的任何数据类型的用户控件上公开一个属性,并在包含该控件的 Web 表单上设置该属性的值。

    用户控制代码隐藏:

     public partial class UserControlTest : System.Web.UI.UserControl
     {
        protected void Page_Load(object sender, EventArgs e)
        { }
    
        public string FirstName
        {
            get { return txtUcFirstName.Text; }
            set { txtUcFirstName.Text = value; }
        }
     }
    

    ================================================ ===============

    我的页面.aspx

    <html xmlns="http://www.w3.org/1999/xhtml">
        <head runat="server">
            <title>Untitled Page</title>
        </head>
        <body>
            <form id="form1" runat="server">
                <div> 
                    <uc1:UserControlTest ID="UserControlTest1" runat="server" /> 
                </div>
                <asp:TextBox id="txtFirstName" runat="server" /> 
                <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
            </form>
        </body>
    </html>
    

    ================================================ ==============

    在网络表单代码隐藏中,

    public partial class MyPage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        { }
    
        protected void Button1_Click(object sender, EventArgs e)
        {
            UserControlTest1.FirstName = txtFirstName.Text;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多