2016-05-08 96 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

相關問題