从另一个表单获取文本框值
本文关键字:取文本 获取 另一个 表单 | 更新日期: 2023-09-27 18:14:12
我在Form1
中有一个名为pass
的TextBox
,我需要获得form2
中的值。我试过了:
public partial class Form1 : Form {
public string GetPass() {
return pass.Text;
}
}
public partial class form2 : Form {
//...
MessageBox.Show(new Form1().GetPass());
}
上面的代码返回一个空字符串,为什么?
您没有显示您的实际代码,如语法错误等所证明-您的问题的唯一逻辑解释是您没有将Form1
的引用正确地传递给Form2
,而是创建一个新表单-新表单将具有空文本框。
为了进一步帮助您,请展示如何在实际代码中将引用传递给Form1。
编辑:看你现在的编辑和上面的正是问题所在。您必须将Form1实例传递给form2,而不是创建一个新实例,即:
public partial class form2 : Form
{
private Form1 form1;
public form2(Form1 otherForm)
{
form1 = otherForm;
}
public void Foo()
{
MessageBox.Show(form1.GetPass());
}
}
在声明部分定义一个字符串变量为Public例如,我们有一个名为"frmOne"的表单
公共字符串strVar = string. empty;
现在,将"frmOne"的TextBox的值赋给从那里获取TextBox值的变量
for example
strVar = Textbox1.Text.ToString();
现在在另一种形式中比如"frmTwo",你可以访问"frmOne"文本框的值就像这样(你想要获取值的地方):
frmOne frm = new frmOne();
string strValue = frm.strVar;
那么,最后,strValue的frmTwo的局部变量包含了frmOne的Textbox的值
您正在创建一个NEW form1,其中文本框可能是空白的,并在该空表单上调用GetPass()。您需要一个已经打开的form1的实例,其中的文本框可能有一个值。
因为每次调用GetPass()
时都创建了一个新的Form1
实例
您需要以某种方式获得打开的form1
的实例,并在其上调用GetPass
:
form1.GetPass();
如果没有详细说明form1
和form2
的创建顺序,您可以使用以下命令来获取form1
的实例:
foreach (Form openedForm in Application.OpenForms) {
if (openedForm.GetType() == Form1) {
MessageBox.Show(openedForm.GetPass());
}
}
返回空,因为您正在创建表单的新实例。假设Form1
已经在某个地方打开,您需要检索Form1
的现有实例并从中提取值。
嗨,你可以这样写:
public partial class Form1: Form
{
public Form1()
{
InitializeComponent();
}
internal Form2 F2=new form2();
private void CommandBarButton1_Click(object sender, EventArgs e)
{
MessageBox.Show(f2.TextBox1.Text);
}
}