AJHope
AJHope

Reputation: 123

Interaction between two user controls in windows form application

I created two user controls which called UserControl1 and UserControl2, UserControl1 contains TextBox1 and UserControl2 contains Button1. In the UserControl2, I want to get TextBox1.Text from UserControl1 when click Button1.

This is revelant code: In UserControl1:

 public partial class UserControlA: UserControl
{
    public UserControlA()
    {
        InitializeComponent();
    }

    public string TexBoxText
    {
        get
        {
            return this.textBox1.Text;
        }
    }
}

In UserControl2:

 public partial class UserControlB: UserControl
{
    public UserControlB()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        //here is to get textbox1.text
    }
}

What should I do?

Upvotes: 1

Views: 2016

Answers (2)

Nam Bình
Nam Bình

Reputation: 422

In UserControl1:

public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
    }
    public TextBox TextBox
    {
        get
        {
            return textBox1;
        }
    }
}

In UserControl2:

public partial class UserControl2 : UserControl
{
    private TextBox txt = null;
    public UserControl2()
    {
        InitializeComponent();
    }
    public TextBox TextBox
    {
        set
        {
            txt = value;
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (txt != null)
            MessageBox.Show(txt.Text);
    }
}

In above controls' container:

uc2.TextBox = uc1.TextBox;

Upvotes: 0

CharithJ
CharithJ

Reputation: 47490

One option is passing UserControlA instance to UserControlB's constructor.

public partial class UserControlB: UserControl
{
    UserControlA userControlA;

    public UserControlB(UserControlA ucA)
    {
        userControlA = ucA;
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        string myString = userControlA.TexBoxText;
    }
}

Upvotes: 1

Related Questions