父表单无法访问子表单公共属性 - Winforms c#

时间:2017-12-07 13:09:44

标签: c# .net winforms properties parent-child

此刻我感觉有些愚蠢,因为我读到的每个地方都是正常的程序,而我也无法找到为什么我也无法做到这一点!

所以,情况如下,我有一个父表和一个子表。儿童表有一个公共财产。从父表单,我想访问子表单公共属性,我不能。

我的代码如下:

家长代码:

namespace myProgram.UserInterfaces
{
  public partial class ProjectNew : Form
  {
    public ProjectNew()
    {
        InitializeComponent();
    }

    private void ButtonSelectCustomer_Click(object sender, EventArgs e)
    {
        using (Form f = new ProjectCustomerList())
        {
            this.SuspendLayout();
            f.ShowDialog(this);
        }
        this.Show();
    }
  }
}

子代码:

namespace myProgram.UserInterfaces
{
  public partial class ProjectCustomerList : Form
  {
    public EntCustomer _selectedCustomer = new EntCustomer();

    public EntCustomer SelectedCustomer {
        get
        {
            return _selectedCustomer;
        }
    }

    public ProjectCustomerList()
    {
        InitializeComponent();
    }
    // --- other code ---
  }  
}

使用(Form f = new ProjectCustomerList())后,我想执行以下操作: var sCustomer = f.SelectedCustomer; ,但是当我这样做时,Visual Studio无法识别Child Form公共属性。

我做错了什么? :|

1 个答案:

答案 0 :(得分:3)

继承是正常的,因为在你的情况下f被处理为一个简单的Form。

您可以将其类型转换为ProjectCustomerList以访问该属性。 运算符也很有用。

if (f is ProjectCustomerList)
{
    (f as ProjectCustomerList).SelectedCustomer =...;
}

或只是

using (ProjectCustomerList f = new ProjectCustomerList())
{
    f.SelectedCustomer =...;
}

在其他评论中看到var,也有效

using (var f = new ProjectCustomerList())
{
    f.SelectedCustomer =...;
}