【问题标题】:How to access one form's property from another?如何从另一个表单访问一个表单的属性?
【发布时间】:2014-01-09 14:24:40
【问题描述】:

我有 2 个 WinForms,在 Form1 我声明了这个:

public int NumberOfContacts { get; set; }

我需要从 Form2 访问该属性。

【问题讨论】:

  • 在这种情况下,form1 将需要对 form2 的引用,反之亦然。如果一个创建另一个,很自然的事情就是给创建的值一个对父级的引用,它可以从中读取必要的值
  • 您可以在问题中添加更多细节;当值实时更改时,是否需要通知第二种形式?如果是这样,您可以使用事件。如果它只需要提取值,@JaredPar 建议的将起作用。

标签: c# winforms


【解决方案1】:

打开您的Form2 时使用此代码:

Form2 f2  = new Form2();
f2.Show(this);

在你的Form2:

var value = ((Form1)Owner).NumberOfContacts;

【讨论】:

    【解决方案2】:

    如果你从form1创建了一个form2的实例,你可以这样设置:

    Form2 form2 = new Form2();
    form2.NumberfOfContacts = this.NumberOfContacts;
    form2.Show();
    

    您也可以将 form1.NumberOfContacts 的值传递给 form2 的构造函数,如下所示:

    Form2 form2 = new Form2(this.NumberOfContacts);
    form2.Show();
    

    Form2 类:

    public int NumberOfContacts { get; set; }
    
    public Form2(int numberOfContacts)
    {
        NumberOfContacts = numberOfContacts;
    }
    

    【讨论】:

      【解决方案3】:

      如果您想访问和更改其他表单属性,您可以使用这种方式:

      private void button1_Click(object sender, EventArgs e)
      {
          frm_main frmmain = new frm_main();
          frmmain.Visible = true;
          frmmain.Enabled = true;
      }
      

      【讨论】:

        【解决方案4】:

        这是一个关于从其他表单加入表单成员的常见问题,我假设您想从 Form1 的当前活动实例访问 NumberOfContacts,在这种情况下,您只需简单地,就像您在您的:

        Form1

         public partial class Form1 : Form
            {
                public int NumberOfContacts { get; set; }
                public Form1()
                {
                    InitializeComponent();
                }
            }
        

        Form2 中:

        public partial class Form2 : Form
            {
                public Form2()
                {
                    InitializeComponent();
                    // ActiveForm will give you access to the current opened/activated Form1 instance
                    var numberOfContacts  = ((Form1) Form1.ActiveForm).NumberOfContacts;
                }
            }
        

        这应该可行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-01
          • 1970-01-01
          • 2013-05-09
          • 2011-06-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多