2017-12-07 15 views
0

私はこれを読んでいるどこでも普通の手順であるため、今は馬鹿だと感じています。なぜ私もそれをやり遂げることができません!親フォームは子フォームにアクセスできないPublicプロパティ - Winforms C#

したがって、状況は次のとおりです。私は親フォームと子フォームを持っています。子フォームにはパブリックプロパティがあります。親フォームから、私は子フォームのパブリックプロパティにアクセスしたいと思います。

私のコードは以下の通り:

親コード:

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

が使用(フォームF =新しいProjectCustomerList()) iは希望次のようにします:var sCustomer = f.SelectedCustomer;、これを行うと、Visual StudioはChild Formのパブリックプロパティを認識しません。

私は間違っていますか? :|

+3

これは、継承と正常に動作します。 '' ProjectCustomerList'''にタイプキャストしてプロパティにアクセスすることができます。 '' '' ''演算子も便利です。 ''もしf(ProjectCustomerList)ならば(fはProjectCustomerListとして).SelectedCustomer'''または単に ''を使用する(ProjectCustomerList f = new ProjectCustomerList())... '' ' – FrankM

+1

@FrankM、あなたのコメントを置くべきです答えとして。それは間違いなく正しいです。 –

+1

'var'を使用することで避けられたもう一つ間違い... –

答えて

2

あなたのケースのfは単純なフォームとして扱われるので、これは継承では正常です。

プロパティにアクセスするにはProjectCustomerListに型キャストすることができます。 is演算子も便利です。あなたのケースではfは単純な形式として扱われているので、他のコメントに

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

または単に

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

見varが、あまりにも

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

私はすでにこのコンセプトを知っていましたが、他のクラスのようなクラスではありませんでしたが...私は目が見えませんでした! :) 今言及したように、それははっきりしたものになった! ありがとう@FrankM – Nuno

関連する問題