2012-04-23 10 views
0

私はそのクラスからプロパティを使用するために別のクラスからオブジェクトをインスタンス化しました。しかしボタンイベントの外側では、すべてが正常に動作しますが、インスタンス化されたオブジェクトがタイプとして使用されているというエラーが表示されます。私はこの非常に同じコードを取って、それをカットしてボタンイベントに貼り付けると、エラーメッセージは表示されません。私は何が起こっているのか、そしてなぜそれが理解できないのですか?オブジェクトがボタンイベントの内部かどうかにかかわらず、オブジェクトはインスタンス化されます。なぜ、ボタンイベントの外側で動作しないのですか?ボタンがクリックされたときではなく、フォームが開くとすぐに別のフォームから2つのラベルフィールドを自動入力する必要があります。ここで インスタンスで別のクラスのプロパティを使用することとの混乱

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

あなたのセッターは、最高の状態ではまったく変わっていません。なぜあなたは 'value'を割り当てていませんか? – 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

私はオブジェクトイニシャライザについて聞いたことがありません。情報とリンクをありがとう。私はそれをチェックし、それに慣れていきます。ご協力ありがとうございました。 –

関連する問題