【发布时间】:2014-06-16 23:09:49
【问题描述】:
我有两个窗体。 F1 有一个填充数据的表格的 GridView。理想情况下,用户单击“导出到 Excel”按钮,会出现一个弹出窗口表单 F2,并要求用户键入要保存在其 TextBox 中的文件名,然后返回 F1。
我在网上尝试了几种方法,包括重载构造函数。它确实帮助我在两个表单之间传递值,但是在用户确认新文件名后,它会使用用户输入打开一个新的 F1。基本上我最终得到了两个 F1(一个旧的,我的数据在 gridview 中,一个新的有用户输入)
谁能给点建议?
//form1:
public partial class Form1 : Form
{
Form2 f2;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (f2 == null)
f2 = new Form2();
f2.ValueFromForm1(textBox1.Text);
f2.Show();
}
}
//form2:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public void ValueFromForm1(string value)
{
textBox1.Text = value;
}
}
【问题讨论】:
-
你需要展示你所尝试的。
-
当你说“回到 1”时,你希望发生什么?从您的问题来看,尚不清楚您打算实现什么。在我看来,您可能还想考虑更系统的方法,例如 MVC 或类似模式...
-
通常情况下,最好的方法是拥有一个核心程序,该程序可供所有事物使用,然后可用于在不同形式之间传递值。
-
什么不起作用?这段代码看起来应该创建并显示
Form2的实例,并成功地向该实例提供来自Form1的值。有什么问题? -
@Kris 用户输入新文件名并单击确认按钮后,F2 关闭。用户输入的字符串会携带到打开的F1。