2016-05-08 80 views
1

我有一个表单中包含一些元素。我想从我的主窗口访问该表单中的数据。我试着做以下几点:从另一个表单访问属性

private void EmailSettings_Load(object sender, EventArgs e) 
     { 
      textBox1.Text = Properties.Settings.Default.emailServer; 
      numericUpDown1.Value = Properties.Settings.Default.emailServerPort; 
      if (Properties.Settings.Default.emailServerSsl == true) 
      { 
       radioButton1.Checked = true; 
      } 
      else 
      { 
       radioButton1.Checked = false; 
      } 
     } 

不过,我的问题是,我无法从我的主要形式访问Properties

private void button1_Click(object sender, EventArgs e) 
     { 
      Properties.Settings.Default.emailServer = textBox1.Text; 
      Properties.Settings.Default.emailServerPort = (int)numericUpDown1.Value; 
      Properties.Settings.Default.emailServerSsl = (radioButton1.Checked == true) ? true : false; 
      Properties.Settings.Default.Save(); 
      this.Close(); 
     } 

我可以使用此代码加载它完全正常的存在形式。所以我仍然无法访问该表单中的数据。我如何从我的主表单中的属性或从其他表单访问数据?

+0

看这里:http://stackoverflow.com/questions/35897399/access-variables-between-cs-files-in-wpf-c-sharp/35897626#35897626 ...这正是你的问题。 – Fruchtzwerg

回答

0

您已更改设置。您可以访问项目中每个位置的设置。在窗口2 在这里,你已经设置的设置,那么你可以从主窗体访问

var setting=Properties.Settings.Default.YourSetting; 

如果命名空间窗口2和主要表现形式是不同的 你必须写这样

var setting=namespaceOfForm2.Properties.Settings.Default.YourSetting; 

你也可以在下面的解决方案

在第二种形式创建一个属性

public yourType yourProperty { get;set;} 

存储你的数据,将其

yourProperty=yourData; 
// set this.DialogResult property if you successfully  stored data 
this.DialogResult=DialogResult.OK; 

而且从主要形式得到它

Form2 f=new Form2(); 
if(f.ShowDialog==DialogResult.OK) 
{ 
    var yourData=f.yourProperty; 
} 

例子:

在窗口2:

public string Name { get; set;} 
public void methodThatYouSetData() 
{ 
    Name=txtbx.Text; 
    this.DialogResult=DialogResult.OK; 
} 

在主要形式有:

Form2 f=new Form2(); 
if(f.ShowDialog==DialogResult.OK) 
{ 
    string Name=f.Name; 
} 
+0

你能解释一下你的方法(代码)吗?我无法理解如何实现它。另外,以后如何加载其他表单的值? – user6274399

相关问题