2017-03-29 3 views
0

WindowsフォームのボタンをクリックしてC#を使用してオブジェクトの属性を表示したいのですが、その操作方法がわかりません。私のコードの一部はこれまでのように見えます。私はC#の初心者です。Windowsフォームのボタンをクリックしたときにオブジェクトの属性を表示する方法は?

class Pizza: ICloneable 
    { 
     private string nume; 
     private int nrIngrediente; 
     private string[] ingrediente; 

     public Pizza() 
     { 
      nume = "Margherita"; 
      nrIngrediente = 2; 
      ingrediente = new string[nrIngrediente]; 
      for (int i = 0; i < nrIngrediente; i++) 
      { 
       ingrediente[0] = "Sos rosii"; 
       ingrediente[1] = "Mozzarella"; 
      } 
     } 



     public Pizza(string den, int nri, string[] ing) 
     { 
      nume = den; 
      nrIngrediente = nri; 
      ingrediente = new string[nrIngrediente]; 
      for (int i = 0; i < nrIngrediente; i++) 
       ingrediente[i] = ing[i]; 
     } 

     public Pizza(Pizza p) 
     { 
      nume = p.nume; 
      nrIngrediente = p.nrIngrediente; 
      ingrediente = new string[nrIngrediente]; 
      for (int i = 0; i < nrIngrediente; i++) 
       ingrediente[i] = p.ingrediente[i]; 
     } 

     public string PizzaName 
     { 
      get { return nume; } 
      set { nume = value; } 
     } 

public int PizzaNrIng 
     { 
      get { return nrIngrediente; } 
      set { nrIngrediente = value; } 


//also, i don't know how to write the getter and setter for this one 
     public string PizzaIngredients 
     //{ 
     // get 
     // { 
     //  for(int i=0;i<nrIngrediente;i++) 
     //   return ingrediente[i]; 
     // } 
     // set { ingrediente = value; } 
     //} 

そして今、フォームのコードは(私はすでにそれを設計していることに注意してください)以下の通りです:

public partial class ListaPizza : Form 
    { 

     public ListaPizza() 
     { 
      InitializeComponent(); 
     } 

     private void Margherita_Click(object sender, EventArgs e) 
     { 

      string[] ingrMargh = new string[2] { "Sos rosii", "Mozzarella" }; 
      Pizza Margherita = new Pizza("Margherita", 2, ingrMargh); 

      //Show(Margherita); 
//here i want the object created above to be shown in a messagebox when i click the button in the form but i don't know how 


     } 
    } 

ありがとうございました!

+0

私は正確に何をしたい理解していないが、あなたは正確に示すために 'ToString'メソッドをオーバーライドすることができます:

public string GetDisplayMessageForPizza() { return "My Pizza is " + nume + ". It contains " + nringrediente + " ingredients : " + PizzaIngredients; } 

とフォームListaPizzaで:ピザクラスでのように実装することができます'MessageBox.Show(Marguerita.ToString()); ' – Pikoh

答えて

0

あなたをgetterとsetterを以下のように設定できます。

public string PizzaIngredients 
{ 
    get 
    { 
     return String.Join(",",nringrediente); 
    } 
    set 
    { 
     nringrediente = value.Split(','); 
    } 
} 

とShow(Margherita);

private void Margherita_Click(object sender, EventArgs e) 
{ 

    string[] ingrMargh = new string[2] { "Sos rosii", "Mozzarella" }; 
    Pizza Margherita = new Pizza("Margherita", 2, ingrMargh); 

    MessageBox.Show(Margherita.GetDisplayMessageForPizza()); 
} 
+1

ところで、文字列が不変なので文字列を連結するのは悪い習慣です。文字列の新しいインスタンスstring.FormatまたはStringBuilderを使用する方が良い –

+0

私はその悪い習慣を知っています。私はちょうど質問者によって期待された答えを掲示した。次回からは気をつけます。 GetDisplayMessageForPizza()では、コーダーは表示される必要な形式の文字列を返すことができます。 – Vandita

+0

これはとてもうまく動作しますが、材料を見せてくれるときは、次のようになります。これは2つの成分を含んでいます:System.String []。それは、すべてのそれらを読むために、C + +で簡単だった@ハンダ@Vandita – Anais

1

MessageBox.Show();

は、文字列値である必要がありますので、文字列は.ToString()メソッドが必要になりますではありません、あなたのオブジェクトの任意の部分

それとも、あなたが新しいフォームにオブジェクトを渡すことができビューをカスタマイズする場合デザイナーと一緒に素敵なレイアウトを作成してください。ゲッターについては

0

- あなたは文字列の配列を返す必要がありますだけではなく、文字列:表示用として

public string[] PizzaIngredients 
{ 
    get 
    { 
     ingrediente; 
    } 
    set 
    { 
     ingrediente = value; 
    } 
} 

- ちょうどMessageBox.Show()を使用します

MessageBox.Show(string.Format("{0} {1}", Margherita.Name, Margherita.nrIngrediente)); 
関連する問題