Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
父窗体可以';t访问子窗体公共属性-Winforms c#_C#_.net_Winforms_Properties_Parent Child - Fatal编程技术网

父窗体可以';t访问子窗体公共属性-Winforms c#

父窗体可以';t访问子窗体公共属性-Winforms c#,c#,.net,winforms,properties,parent-child,C#,.net,Winforms,Properties,Parent Child,我现在觉得自己有点傻,因为无论我读到哪里,这都是一个正常的过程,我就是不知道为什么我不能也这么做 所以,情况如下,我有一个父窗体和一个子窗体。子窗体具有公共属性。从父窗体,我想访问子窗体公共属性,但我不能 我的代码如下: 父代码: namespace myProgram.UserInterfaces { public partial class ProjectNew : Form { public ProjectNew() { InitializeComp

我现在觉得自己有点傻,因为无论我读到哪里,这都是一个正常的过程,我就是不知道为什么我不能也这么做

所以,情况如下,我有一个父窗体和一个子窗体。子窗体具有公共属性。从父窗体,我想访问子窗体公共属性,但我不能

我的代码如下:

父代码:

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,但当我这样做时,VisualStudio无法识别子窗体公共属性


我做错了什么|

这对于继承来说是正常的,因为在您的例子中f是作为一个简单的形式处理的

您可以将其键入
ProjectCustomerList
以访问该属性。 is运算符也很有用

if (f is ProjectCustomerList)
{
    (f as ProjectCustomerList).SelectedCustomer =...;
}
或者干脆

using (ProjectCustomerList f = new ProjectCustomerList())
{
    f.SelectedCustomer =...;
}
在其他评论中看到var,同样有效

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

这对于继承来说是正常的,因为在您的例子中f是作为一个简单的形式处理的

您可以将其键入
ProjectCustomerList
以访问该属性。 is运算符也很有用

if (f is ProjectCustomerList)
{
    (f as ProjectCustomerList).SelectedCustomer =...;
}
或者干脆

using (ProjectCustomerList f = new ProjectCustomerList())
{
    f.SelectedCustomer =...;
}
在其他评论中看到var,同样有效

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

这对于继承来说是正常的,因为在您的例子中f是作为一个简单的形式处理的。您可以将其键入
ProjectCustomerList
以访问该属性。
is
运算符也很有用<代码>如果(f是ProjectCustomerList)(f是ProjectCustomerList)。选择Customer或使用(ProjectCustomerList f=new ProjectCustomerList())…@FrankM将您的评论作为答案;这肯定是正确的。使用
var
可以避免的另一个错误是:请看我的两种形式的项目:这对于继承来说是正常的,因为在您的例子中,f是作为简单形式处理的。您可以将其键入
ProjectCustomerList
以访问该属性。
is
运算符也很有用<代码>如果(f是ProjectCustomerList)(f是ProjectCustomerList)。选择Customer或使用(ProjectCustomerList f=new ProjectCustomerList())…@FrankM将您的评论作为答案;这肯定是正确的。使用
var
可以避免的另一个错误是:我已经知道这个概念,但我没有将它与表单相关联,表单是一个与其他类类似的类,但是。。。我是瞎的!:)现在你提到的是,它变得非常清晰!非常感谢@FrankMI已经知道这个概念,但是我没有把它和表单联系起来,表单和其他类一样,但是。。。我是瞎的!:)现在你提到的是,它变得非常清晰!非常感谢@FrankM