在(Form1)中我有一个设置按钮,当我点击它时,会显示一个新的表单(Form2),使用以下代码行:
private void b7_Click(object sender, EventArgs e)
{
Form3 frm = new Form3();
frm.Show();
}
在form3中,我有6个文本框和两个按钮,保存和取消。
我要做的是向用户提供此表单,以便将必要的数据输入到表单中,然后单击“保存设置”按钮。在Form1中,我想访问这些文本框以获取其当前值(当用户单击保存设置时)。我试图添加一个Form4并命名它(MiddleForm),我添加了6个文本框,并在Form3(上图中的表单)中我写了这些行:
private void button2_Click(object sender, EventArgs e)
{
MiddleForm mf = new MiddleForm();
mf.textBox1.Text = keywrd1.Text;
mf.textBox2.Text = keywrd2.Text;
mf.textBox3.Text = keywrd3.Text;
mf.textBox4.Text = keywrd4.Text;
mf.textBox5.Text = keywrd5.Text;
mf.textBox1.Text = thelink.Text;
Close();
}
然后我尝试从Form1(我需要使用文本框值的表单)访问传递给MiddleForm的值,在Form1中,我写了这些行(仅用于调试目的)
MiddleForm mf = new MiddleForm();
MessageBox.Show(mf.textBox1.Text); // to see whether there is something
不幸的是,似乎没有任何内容传递给mf.TextBox1
如何从Form1调用Form3的当前值(使用保存设置保存按钮保存),以便在其余代码中使用它们。
有什么帮助让这个工作?
答案 0 :(得分:5)
在Form3中创建6个公共属性:
public partial class Form3 : Form
{
public string Value1
{
get { return this.keywrd1.Text; }
}
public string Value2
{
get { return this.keywrd2.Text; }
}
...
}
Form3关闭后(但在处理之前),您可以通过属性访问文本值。正如另一个答案所指出的那样,使用ShowDialog代替Show,并在它自己的代码中关闭Form3。
private void b7_Click(object sender, EventArgs e)
{
Form3 frm = new Form3();
frm.ShowDialog();
string value1 = frm.Value1;
...
}
答案 1 :(得分:3)
你需要这样做:
var form = Form.ActiveForm as Form3;
String myText = form.txtBoxName.Text;
答案 2 :(得分:3)
您应该创建一个公共字段,提供您想要从表单中获取的值。如果你去Form1的源代码,你应该添加如下内容:
public string TextValue1 {
get {return TextBox1.Text;}
}
现在,您可以使用Form1.TextBox1从文本框中检索字符串值。
答案 3 :(得分:3)
您可以尝试使用ShowDialog
它将Form
创建为模型对话框,然后您可以检查DialogResult
以了解数据是否已保存或{{1}被取消了。
即
Form
<强> Form3 强>
private void button2_Click(object sender, EventArgs e)
{
Form3 frm = new Form3();
if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
savedSettings = frm.getTextBoxValues();
}
}
答案 4 :(得分:3)
在Form3
中创建公共属性
public string[] Keys
{
get
{
return new string[] { tbKey1.Text, tbKey2.Text, tbKey3.Text,
tbKey4.Text, tbKey5.Text};
}
}
public string Link { get { return tbLink.Text; } }
从Form1
您可以像这样访问这些属性
Form3 frm = new Form3();
if (frm.ShowDialog() == DialogResult.OK) {
string[] keys = frm.Keys;
string link = frm.Link;
}
注意:使用ShowDialog
而非Show
非常重要,因为Show
不会等待其他表单关闭。此外,在Form3
中单击“保存设置”时,请设置对话框结果
DialogResult = DialogResult.OK;
Close();
以便您可以在Form1
中查看,如上所示。