我正在尝试使自己填充的文本框(UPC_txtBox4
)等于UPC_txtBox2
的相同值。这两个文本框是分开的形式,但我觉得应该有一种方法来链接这两个。
答案 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;
}
注意:这是未经测试的(尽管它应该可以工作),并且主要是伪代码,您需要明确地将其定制到您的解决方案中。