2012-04-23 2 views
0

다른 클래스의 객체를 인스턴스화하여 해당 클래스의 속성을 사용했습니다. 모든 단추 이벤트 내에서 잘 작동하지만, 단추 이벤트 외부에서 내 인스턴스화 된 개체를 형식으로 사용중인 말해 오류가 발생합니다. 이 동일한 코드를 잘라내어 단추 이벤트에 잘라내어 붙여 넣으면 오류 메시지가 나타나지 않습니다. 나는 무슨 일이 일어나고 있는지 이해하지 못합니다. 버튼 이벤트의 내부 또는 외부에 관계없이 객체가 인스턴스화되므로 버튼 이벤트 외부에서 작동하지 않는 이유는 무엇입니까? 폼이 열리 자마자 다른 폼의 자동 채워진 두 레이블 필드가 필요합니다. 단추를 클릭 할 때가 아닙니다. 여기 인스턴스가있는 다른 클래스의 속성을 사용하는 데 혼란이 있음

public partial class MeasurementsForm : Form 
{ 
    private MeasurementsBOL busObject = new MeasurementsBOL(); 

    //autofill bodyfat and body weight from nutrition form when form opens 
    busObject.BodyFatB4 = double.Parse(lblBodyFatB4FromNutrition.Text); 
    busObject.BodyWeightB4 = double.Parse(lblWeightB4FromNutrition.Text); 

    //default constructor 
    public MeasurementsForm() 
    { 
     InitializeComponent(); 
     busObject.InitializeConnection(); 
    }   

    //event handler for B4 input data 
    private void btnEnterMeasurementsB4_Click(object sender, EventArgs e) 
    { 


     //convert input data and assign to variables 
     busObject.ChestMeasurementB4 = double.Parse(txtChestB4.Text); 
     busObject.WaistMeasurementB4 = double.Parse(txtWaistB4.Text); 
     busObject.HipsMeasurementB4 = double.Parse(txtHipsB4.Text); 
     busObject.RightThighB4 = double.Parse(txtRightThighB4.Text); 
     busObject.LeftThighB4 = double.Parse(txtLeftThighB4.Text); 
     busObject.RightArmB4 = double.Parse(txtRightArmB4.Text); 
     busObject.LeftArmB4 = double.Parse(txtLeftArmB4.Text); 

     //call method to save input data 
     busObject.SaveB4Data(); 

     //clear text boxes of data 
     this.txtChestB4.Clear(); 
     this.txtWaistB4.Clear(); 
     this.txtHipsB4.Clear(); 
     this.txtRightThighB4.Clear(); 
     this.txtLeftThighB4.Clear(); 
     this.txtRightArmB4.Clear(); 
     this.txtLeftArmB4.Clear(); 

     //close form 
     this.Close(); 
    } 

는 MeasurementsBOL 클래스에서 내 두 가지 속성은 다음과 같습니다

여기 내 코드입니다. 나는 그것을 보여주지 않지만, 객체 인스턴스화되었습니다

//properties for variables 
public double BodyFatB4 
{ 
    get { return bodyFatB4; } 
    set { bodyFatB4 = nutritionObject.BodyFatStart;} 
} 

public double BodyWeightB4 
{ 
    get { return bodyWeightB4; } 
    set { bodyWeightB4 = nutritionObject.BodyWeight; } 
} 
+3

세터의 개성이 매우 뛰어납니다. 왜 '값'을 지정하지 않으십니까? – BrokenGlass

+0

@BrokenGlass : 좋은 전화 - 나는 심지어 재산 시체를 보지 못했다. –

+0

@brokenGlass - 다른 클래스의 속성에서 값을 가져 오기를 원하기 때문입니다. 그걸 할 방법이 아닌가? –

답변

3

이 코드는 어떤 방식에없는, 생성자 등 :

private MeasurementsBOL busObject = new MeasurementsBOL(); 

//autofill bodyfat and body weight from nutrition form when form opens 
busObject.BodyFatB4 = double.Parse(lblBodyFatB4FromNutrition.Text); 
busObject.BodyWeightB4 = double.Parse(lblWeightB4FromNutrition.Text); 

그것은 변수 선언을 포함 할 수 있지만, 당신 그런 추가 문장을 추가 할 수는 없습니다. 그냥 문을 포함 할 수 없습니다

private MeasurementsBOL busObject = new MeasurementsBOL() 
{ 
    BodyFatB4 = double.Parse(lblBodyFatB4FromNutrition.Text), 
    BodyWeightB4 = double.Parse(lblWeightB4FromNutrition.Text) 
}; 

기본적으로 유형 만 등의 필드 선언, 생성자 선언, 속성 선언, 메소드 선언과 같은 멤버를 포함 할 수 있습니다 : 다행히 object initializer가 사용할 수 있습니다.

+0

나는 개체 이니셜 라이저에 대해 들어 본 적이 없다. 정보 및 링크를 가져 주셔서 감사합니다. 나는 그것을 조사하고 그것에 익숙해 질 것이다. 도와 줘서 고마워. –

관련 문제