我有2个Windows窗体。
首先,主窗口窗体具有多行文本框和一个按钮。该按钮将打开第二个窗体,在该窗体中,我可以使用AddEntry对象将数据添加到数组。
在第二种形式中,我有文本框和一个按钮(btnAddEntry),应从第一种形式中更新文本框的内容。
输入数据后,我想从第一种形式的文本框中显示数据。
问题是我想出的代码似乎不起作用。
我该如何解决?
要使BASIC工作,请执行以下操作。创建一个新项目。您当前的代码,Windows等都没有任何内容。默认项目将创建一个表单“ Form1”,暂时不做任何处理。
向项目中添加一个新窗体,它将默认为“ Form2” …在其上放一个文本框,在其上放一个按钮。为了咧嘴笑,并澄清区分对象名称,请将Form2上控件的名称更改为“ txtOnForm2”和“ btnOnForm2”(对我的示例区分大小写,而可读性与“ txtonform2”均小写)。现在,在表单上,右键单击并单击“查看代码”。它将带您到找到构造函数的其他“局部类”声明。添加以下内容,不要担心编译错误,因为另一半将在我们接下来将代码放入Form1中时…
// specifically typecasting the TYPE of form being passed in, // not just a generic form. We need to see the exposed elements Form1 CalledFrom; // Ensure to do the : this() to make sure default behavior // to initialize the controls on the form are created too. public Form2(Form1 viaParameter) : this() { CalledFrom = viaParameter; } private void btnOnForm2_Click(object sender, EventArgs e) { CalledFrom.ValuesByProperty = this.txtOnForm2.Text; MessageBox.Show( "Check form 1 textbox" ); string GettingBack = CalledFrom.ValuesByProperty; MessageBox.Show( GettingBack ); CalledFrom.SetViaMethod( "forced value, not from textbox" ); MessageBox.Show( "Check form 1 textbox" ); GettingBack = CalledFrom.GetViaMethod(); MessageBox.Show( GettingBack ); }
保存并关闭Form2设计器和代码窗口。
现在,打开Form1。在其上放置一个文本框和一个按钮。控件的默认名称分别为“ textbox1”和“ button1”。保持原样。双击按钮(在form1上)。它将为该按钮调出一段代码。粘贴以下内容
private void button1_Click(object sender, EventArgs e) { Form2 oFrm = new Form2(this); oFrm.Show(); } public string ValuesByProperty { get { return this.textBox1.Text; } set { this.textBox1.Text = value; } } public void SetViaMethod(string newValue) { this.textBox1.Text = newValue; } public string GetViaMethod() { return this.textBox1.Text; }
现在,保存表单并运行它们。单击第一个窗体上的按钮,使用本身已创建的实例(而不是其自身的新SECOND实例)调用第二个窗体。将显示第二个表单。移动窗口,以便您可以同时看到两个窗口。
在文本框的第二个窗口中输入一些文本,然后单击按钮…遵循即将发生/正在发生的事情。