试图找到解决这个问题的方法,但找不到工作方法,所以我决定自己提问。
我在Form2.cs中有一个名为“ipaddress_2”的文本框,在Form1.cs中有一个名为“ipaddress”的文本框。
这是我用来启动Form2.cs的代码。
private void rtmTool_Load(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog();
}
我想将数据从Form2.cs框导入到Forms1.cs ip框中,所以当用户关闭form2.cs时,form1将填入(form2)ip。</ p>
如果您需要/想要查看,这是form1.cs的链接。 http://www.mediafire.com/download/3f5726axo7w6o92/Source.txt
问候。
答案 0 :(得分:0)
当f2关闭时,控制将返回到调用ShowDialog的函数。
f2仍然可以使用,因此只要控件被声明为public,您就可以直接访问它们:
private void rtmTool_Load(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog();
ipAddress.Text = f2.ip_address2.Text;
}
答案 1 :(得分:0)
默认情况下,在Form2.Designer.cs
文件中,ipaddress_2
被声明为private
。将访问说明符更改为public
。
然后从Form1.cs
开始,您可以访问Form2.cs - ipaddress_2
控件,如下所示。
private void rtmTool_Load(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog();
ipAddress.Text = f2.ip_address2.Text; // After the Form2.cs has been closed, the ipaddress from Form2.cs has been accessed and displayed in Form1.cs - ipaddress Textbox.
}
答案 2 :(得分:0)
只是为了添加其他两个答案,我的观点是控件不应该公开,除非你有一个非常有效的理由......在这种情况下我通常更喜欢保持我的控件私有添加属性仅读取控件。请参阅下面的示例
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
using(var form = new Form2())
{
form.ShowDialog();
ipAddess.Text = form.IpAddress;
}
}
}
public partial class Form2 : Form
{
public string IpAddress
{
get
{
return ip_address.Text;
}
}
}
答案 3 :(得分:0)
我建议创建一个对象来保存要在表单上显示的任何数据,并将此对象从第一个表单传递给第二个表单。然后,该对象可以绑定到两个表单的控件,并将其数据传播到两个表单。
示例对象
public class IPSettings:INotifyPropertyChanged
{
private string ipAddress;
public string IPAddress
{
get
{
return this.ipAddress;
}
set
{
this.ipAddress = value;
OnPropertyChanged("IPAddress");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if(handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
表格1
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ipSettings = new IPSettings();
textBoxIpAddress1.DataBindings.Add("Text", ipSettings, "IPAddress");
}
private IPSettings ipSettings;
private void buttonOpenDialog_Click(object sender, EventArgs e)
{
new Form2(ipSettings).ShowDialog();
}
}
表格2
public partial class Form2 : Form
{
public Form2(IPSettings ipSettings)
{
InitializeComponent();
textBoxIpAddress2.DataBindings.Add("Text", ipSettings, "IPAddress",false,DataSourceUpdateMode.OnPropertyChanged);
}
}