Allen Skelton
Allen Skelton

Reputation: 15

Making two boxes equal each other

I am trying to make a text box (UPC_txtBox4) self populate to equal the same value of UPC_txtBox2. The two text boxes are on separate forms but I feel there should be a way to link the two.

Upvotes: 0

Views: 271

Answers (2)

competent_tech
competent_tech

Reputation: 44931

If form1 is responsible for navigating to form2, then you can pass the value on the query string from form1 using a URL similar to the following:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (this.IsPostBack)
        {
            Response.Redirect(Request.ApplicationPath + "/Form2.aspx?upc=" + UPC_txtBox2.Text, false);
        }
    }

then in form2 code:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            // Assuming this field is an asp.net textbox and not an HTML input
            UPC_txtBox4.Text = Request.QueryString["upc"];
        }
    }

Alternatively, you could store the value in session state, assuming that you are using sessions.

Upvotes: 1

MartinDotNet
MartinDotNet

Reputation: 2505

CORRECTION: Seeing as you are using WebForms, not WinForms as I had assumed, the below is irrelevant. I'll leave it just incase it helps someone else.

You should just create a method on the form that needs to be updated, then pass a reference when of that form to the newly created form.

This won't work if either form is a dialog (as far as I know).

So:

Form that has the textbox that will be directly edited.

private Form formToUpdate;
public void OpenForm(Form _formToUpdate)
{
    formToUpdate = _formToUpdate;
    txtBlah.TextChanged += new EventHandler(OnTextChanged);
    this.Show();
}

    private void OnTextChanged(object sender, EventArgs e)
{
   formToUpdate.UpdateText(txtBlah.Text);
}

Form that is to be dynamically updated:

delegate void StringParameterDelegate (string value);
public void UpdateText(string textToUpdate)
{
     if (InvokeRequired)
     {
        BeginInvoke(new StringParameterDelegate(UpdateText), new object[]{textToUpdate});
        return;
     }
     // Must be on the UI thread if we've got this far
     txtblah2.Text = textToUpdate;
 }

Note: this is untested (although it should work), and largely pseudo code, you'll need to tailor it to your solution obviously.

Upvotes: 0

Related Questions