2017-12-07 21 views
0

나는이 모든 것을 읽는 것이 정상적인 절차이기 때문에 그 순간 어리석은 느낌이 들며, 왜 내가 그 일을 할 수 없는지도 찾을 수 없습니다. !부모 양식은 하위 양식 Public 속성 - Winforms에 액세스 할 수 없습니다. C#

그래서 상황은 다음과 같습니다. 부모 양식과 하위 양식이 있습니다. Child Form은 공용 속성을가집니다. 부모 양식에서 Child Form 공용 속성에 액세스하려고하는데 할 수 없습니다.

내 코드는 다음

부모 코드 :

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()) 나는 것 다음과 같이하십시오 : var sCustomer = f.SelectedCustomer;,하지만 이렇게하면 Visual Studio에서 Child Form 공용 속성을 인식하지 못합니다.

내가 뭘 잘못하고 있니? : |

+3

이 상속 정상 작동합니다. Property에 접근하기 위해'''ProjectCustomerList'''에 타입 변환 할 수 있습니다. '''is'' 연산자도 유용합니다. ''(f는 ProjectCustomerList 임) (f는 ProjectCustomerList 임) .SelectedCustomer''' 또는 간단히'''(ProjectCustomerList f = 새 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