使两个盒子相等

本文关键字:盒子 两个 | 更新日期: 2023-09-27 18:16:29

我试图使文本框(UPC_txtBox4)自我填充等于UPC_txtBox2的相同值。这两个文本框位于不同的表单上,但我觉得应该有一种方法将它们连接起来。

使两个盒子相等

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

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

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

更正:鉴于您使用的是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;
 }

注意:这是未经测试的(尽管它应该可以工作),并且大部分是伪代码,显然您需要根据您的解决方案对其进行调整。