使两个盒子彼此相等

时间:2011-12-03 19:21:28

标签: c# asp.net

我正在尝试使自己填充的文本框(UPC_txtBox4)等于UPC_txtBox2的相同值。这两个文本框是分开的形式,但我觉得应该有一种方法来链接这两个。

2 个答案:

答案 0 :(得分:1)

如果form1负责导航到form2,那么您可以使用类似于以下内容的URL从form1传递查询字符串上的值:

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

然后在form2代码中:

    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"];
        }
    }

或者,您可以将值存储在会话状态中,假设您正在使用会话。

答案 1 :(得分:0)

更正:看到你正在使用WebForms,而不是我假设的WinForms,下面是无关紧要的。我会离开它只是为了帮助其他人。

您应该只在表单上创建一个需要更新的方法,然后将该表单的引用传递给新创建的表单。

如果任何一个表单是一个对话框(据我所知),这将不起作用。

所以:

包含将直接编辑的文本框的表单。

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);
}

要动态更新的表单:

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;
 }

注意:这是未经测试的(尽管它应该可以工作),并且主要是伪代码,您需要明确地将其定制到您的解决方案中。