在 Winforms 中,空字符串从一种形式传递到另一种形式
Empty string gets passed from one Form to another in Winforms
我有以下问题:
我有一个 Form1
,我从中打开第二个 Form2
。现在我在 Form2
中有一个保存 Button
,其中来自文本框的条目被保存到一个 csv 文件中。但我也想保存 Form1
中的一些条目。来自 Form2
的 Textbox
条目正在保存,但来自 Form1
的条目是空字符串。以下代码:
在表格 1 中:
public void showInputToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2(this);
form2.Show();
}
通过第一个表单打开第二个表单,并从 Form1 文本框中获取条目:
public String getLocation()
{
return LocationBox.Text;
}
public String getFilesLoc()
{
return FilesLocation.Text;
}
在 Form2 中我有以下内容:
private Form1 m_form = null;
public Form2(Form1 f)
{
InitializeComponent();
m_form = f;
}
然后是获取条目并保存它们的函数:
private void button1_Click(object sender, EventArgs e)
{
Form1 form1 = new Form1();
proc.setParams(form1.getLocation(),getFilesLoc());
proc.saveCurrentSettings();
}
我省略了其他参数。因此 Form2
中的条目被正确读取,但 Form1
中的条目只是一个空字符串 ("")。我能做什么?
在点击处理程序中,您要在此处创建 new Form1
:
Form1 form1 = new Form1();
这将有空值 - 但您想要来自 现有 表单的值,您在构造函数中保留了对它的引用 - 所以使用它!
private void button1_Click(object sender, EventArgs e)
{
proc.setParams(m_form.getLocation(), m_form.getFilesLoc());
proc.saveCurrentSettings();
}
(我强烈建议您开始遵循 .NET 命名约定,很可能将那些 get
方法转换为属性,并考虑将 值 传递给您的 Form2
构造函数而不是 Form1
引用本身。这取决于您是否需要 "see" 在构造 Form2
之后对 Form1
所做的任何更改。)
使用
proc.setParams(m_form.getLocation(), m_form.getFilesLoc());
proc.saveCurrentSettings();
您没有使用 Form1
的引用,而是创建了一个新对象并使用了它。
我有以下问题:
我有一个 Form1
,我从中打开第二个 Form2
。现在我在 Form2
中有一个保存 Button
,其中来自文本框的条目被保存到一个 csv 文件中。但我也想保存 Form1
中的一些条目。来自 Form2
的 Textbox
条目正在保存,但来自 Form1
的条目是空字符串。以下代码:
在表格 1 中:
public void showInputToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2(this);
form2.Show();
}
通过第一个表单打开第二个表单,并从 Form1 文本框中获取条目:
public String getLocation()
{
return LocationBox.Text;
}
public String getFilesLoc()
{
return FilesLocation.Text;
}
在 Form2 中我有以下内容:
private Form1 m_form = null;
public Form2(Form1 f)
{
InitializeComponent();
m_form = f;
}
然后是获取条目并保存它们的函数:
private void button1_Click(object sender, EventArgs e)
{
Form1 form1 = new Form1();
proc.setParams(form1.getLocation(),getFilesLoc());
proc.saveCurrentSettings();
}
我省略了其他参数。因此 Form2
中的条目被正确读取,但 Form1
中的条目只是一个空字符串 ("")。我能做什么?
在点击处理程序中,您要在此处创建 new Form1
:
Form1 form1 = new Form1();
这将有空值 - 但您想要来自 现有 表单的值,您在构造函数中保留了对它的引用 - 所以使用它!
private void button1_Click(object sender, EventArgs e)
{
proc.setParams(m_form.getLocation(), m_form.getFilesLoc());
proc.saveCurrentSettings();
}
(我强烈建议您开始遵循 .NET 命名约定,很可能将那些 get
方法转换为属性,并考虑将 值 传递给您的 Form2
构造函数而不是 Form1
引用本身。这取决于您是否需要 "see" 在构造 Form2
之后对 Form1
所做的任何更改。)
使用
proc.setParams(m_form.getLocation(), m_form.getFilesLoc());
proc.saveCurrentSettings();
您没有使用 Form1
的引用,而是创建了一个新对象并使用了它。