空字符串在 WinForms 中从一个窗体传递到另一个窗体
本文关键字:窗体 一个 另一个 字符串 WinForms | 更新日期: 2023-09-27 18:36:39
我有以下问题:我有一个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
中的条目只是一个空字符串 (")。我能做什么?
在单击处理程序中,您将在此处创建新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
引用本身。这取决于您是否需要"查看"在构建Form2
后对Form1
所做的任何更改。
使用
proc.setParams(m_form.getLocation(), m_form.getFilesLoc());
proc.saveCurrentSettings();
您不是在使用 Form1
的引用,而是创建一个新对象并使用它。