考虑我有两种窗体形式的情况,比如F1
和F2
。使用F1
后,我现在调用了F2.ShowDialog()
。这也将F2
放在屏幕上。现在两个表单都可见,我如何将数据从F1
传递到F2
?此外,一旦F2
(模态对话框)完成,我该如何将数据返回到F1
?
答案 0 :(得分:3)
是否有人考虑过将值传递给tag属性中的表单。
Form newForm = new form();
newForm.Tag = passValue;
newform.showmodal();
当显示newform时,加载(或任何其他)例程可以使用标记
中的数据public void load()
{
if (this.Tag.length > 0)
{
// do something with the data
}
}
答案 1 :(得分:2)
将此代码添加到f1。
中的相关位置Form f2 = new Form();
f2.ShowDialog();
HTH
答案 2 :(得分:2)
int x=10;
Form1 f2 = new Form1(x);
f2.ShowDialog();
这是以传递值的形式写的。要重新接收此值,您必须在接收的表单中创建新的构造函数
那将是那样的
public Form2(int x)
{
InitializeComponent();
this.x = x;
}
并且当你从form2创建实例时会在第一个表单中注意到你有两个选择,其中一个让你传递值
答案 3 :(得分:1)
假设你在Form1中有一个TextBox控件,你希望将它的值传递给Form2并以模态方式显示Form2。
在Form1中:
private void ShowForm2()
{
string value = TheTextBox.Text;
Form2 newForm = new Form2();
newForm.TheValue = value;
newForm.ShowDialog();
}
在Form2中:
private string _theValue;
public string TheValue
{
get
{
return _theValue;
}
set
{
_theValue = value;
// do something with _theValue so that it
// appears in the UI
}
}
这是一种非常简单的方法,对于更大的应用程序可能不是最好的(在这种情况下,您可能希望研究MVC模式或类似方法)。关键是你按照以下顺序做事:
当您以模态方式显示表单时,它将阻止调用表单中的代码,直到新表单关闭为止,因此您无法在那里使用简单的方式将信息传输到新表单(这是可能的,但是不必要地复杂化。)
[编辑:将Form2中的属性方法扩展为更清晰]
答案 4 :(得分:0)
如果您只想将数据推送到子对话框,请考虑将参数添加到子对话框的构造函数,然后调用ShowDialog()。但是,以另一种方式传递数据有点棘手。
答案 5 :(得分:0)
让我重新构思这个问题 我有2个表格f1,f2 ...... 我叫 表格f2 = new Form(); f2.ShowDialog();
//现在我需要将参数从f1窗口传递给f2(这是模态对话框)也将值从f2格式返回到f1
//现在使用共同命名空间中的变量(对于f1,f2)
答案 6 :(得分:0)
考虑使用MVC模式,即不是在表单中包含太多数据并传递它们,而是使用保持这些东西的模型类。
答案 7 :(得分:0)
使用定义的Type作为您的信息(class,struct ...)并在Form1中声明一个变量
struct myData
{
String str1;
String str2;
}
Public Class Form1
{
Public myData dat;
}
(注意:类型不应该是公开的,这只是为了这个例子) 因此,数据位于Form1中。修改Form2的构造函数以接受Form1类型的参数。
public Form2(Form1 frm1)
{
mFrm1 = frm1;
InitializeComponent();
}
现在,当您调用form2时,请发送正在进行调用的 Form1 实例:
Form2 frm2 = new Form2(this);
frm2.ShowDialog();
现在,当执行到达Form2时,您可以访问Form1中的MyData:
mFrm1.dat;
通过这种方式,Form1和Form2的两个实例都将引用一个位置的数据。对表格的两个实例都可以进行更改/更新。
答案 8 :(得分:0)
可能是我迟到了。但是所有可能想要的人。
在目标表单中有一个像这样定义的构造函数
public partial class Destination: Form
{
string valueAccepted;
public Destination(string _valuePassed)
{
InitializeComponent();
this.valueAccepted= _valuePassed;
}
}
并在Source Form中调用这样的表单
Source sourceForm= new Source ("value Passed");
sourceForm.ShowDialog();
这种方式“值传递”从表单源传递到表单目的地
答案 9 :(得分:-1)
有两种方法可以在两种表单之间传递数据 查看这些包含示例视频的链接
-FormToForm使用属性 - http://windowsclient.net/learn/video.aspx?v=108089