从其他表单访问属性

时间:2016-05-08 06:47:51

标签: c# forms 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();
        }

我可以使用以下代码在现有表单中完全加载它:

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。所以我仍然无法访问该表单中的数据。如何从主表单或其他表单中的属性访问数据?

1 个答案:

答案 0 :(得分:0)

您已更改设置。您可以从项目的每个位置访问设置。 您在此处设置了form2中的设置,然后您可以从主窗体

访问它
 var setting=Properties.Settings.Default.YourSetting;

如果form2和主窗体中的命名空间不同 你必须写得像

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;
}

示例:

在form2上:

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;
}