将值从Usercontrol传递到Form

时间:2013-06-01 16:39:40

标签: c# winforms user-controls

我用textBox创建一个usercontrol1。在我的表单中,我添加了一个usercontrol(带有textBox的usercontrol1)和一个textBox。我已经知道如何将值从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的文本框? 我找到了如何从usercontrol关闭表单。

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

更改父级颜色

this.ParentForm.BackColor= Color.Red;

我如何实现类似这样的方法或其他方法将值从usercontrol传递到表单?

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

this.ParentForm.ID= ID;

2 个答案:

答案 0 :(得分:3)

我在一个新项目中创建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; }
}

答案 1 :(得分:0)

您可以在用户控件上公开您喜欢的任何数据类型的属性,并在包含该控件的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; }
    }
 }

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

MyPage.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>

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

在webform代码隐藏中,

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;
    }
}
相关问题