2013-10-31 38 views
1

這是我第一次在C#上使用Visual Studio的Windows窗體。我試圖讓我的表單有一個按鈕,當您點擊「計算應付金額」時,它會將計算的內容放入「應付金額」字段中。但是,任何時候我說「textBox3 = aOrder.AmountDue()」,它表示它不能將double轉換爲System.Windows.Forms.TextBox。我如何適當地轉換它?這是我的程序代碼。如何將計算添加到C#中的GUI中?

namespace MidTermPizzas 
{ 
    class pizzaOrder 
    { 
     public int numberOfCokes 
     { 
     get 
     { 
      throw new System.NotImplementedException(); 
     } 
     set 
     { 
     } 
     } 

     public int numberOfPizzas 
     { 
     get 
     { 
      throw new System.NotImplementedException(); 
     } 
     set 
     { 
     } 
     } 

     public double InputOrder() 
     { 
     const double COKE_PRICE = 1.49; 
     const double PIZZA_PRICE = 7.99; 
     double inputOrder = (numberOfCokes * COKE_PRICE) + (numberOfPizzas * PIZZA_PRICE); 
     return InputOrder(); 
     } 

     public double TaxDue() 
     { 
     const double TAX = .073; 
     double taxDue = (this.InputOrder() * TAX); 
     return TaxDue(); 
     } 

     public double GetAmountDue() 
     { 
     double getAmountDue = this.InputOrder() + this.TaxDue(); 
     return GetAmountDue(); 
     } 

     public double GetAmountPaid() 
     { 
     double getAmountPaid; 
     return GetAmountPaid(); 
     } 

     public double GetChargeDue() 
     { 
     double getChargeDue = this.GetAmountDue() - this.GetAmountPaid(); 
     return GetAmountPaid(); 
     } 
    } 
} 

namespace MidTermPizzas 
{ 
    public partial class Form1 : Form 
    { 
     pizzaOrder aOrder = new pizzaOrder(); 
     DailySummary aSummary = new DailySummary(); 

     public Form1() 
     { 
     InitializeComponent(); 
     } 

     //click File, Exit 
     private void exitToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
     MessageBox.Show("Enjoy your pizza!"); 
     this.Close(); 
     } 

     //click View, All Orders Placed 
     private void allOrdersToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
     AllOrdersPlaced myForm = new AllOrdersPlaced(); 
     myForm.Show(); 
     } 

     //click View, Summary of Orders Placed 
     private void summaryOfOrdersToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
     SummaryOfOrdersPlaced myForm2 = new SummaryOfOrdersPlaced(); 
     myForm2.Show(); 
     } 

     //text in box to the right of "Amount Due" 
     private void textBox3_TextChanged_1(object sender, EventArgs e) 
     { 
     textBox3 = aOrder.GetAmountDue(); 
     } 
    } 
}  

回答

1

textBox3是對象。該對象有各種方法(做東西)和屬性(用來存放東西),具體來說就是textBox3.Text,這是你可以在框中設置文本的地方。記住MSDN是你的朋友。

+0

「'System.Windows.Forms.TextBox'沒有包含'text'的定義,也沒有找到接受'System.Windows.Forms.TextBox'類型的第一個參數的擴展方法'text'缺少使用指令或程序集引用?)「 – me123

+5

C#區分大小寫,您必須使用」.Text「而不是」.text「。 –

4
textBox3.Text = Convert.ToString(aOrder.AmountDue()); 

假設AmountDue()返回Double。

您有兩個問題,您試圖將實際文本框對象設置爲字符串而不是文本框的.Text屬性,並且您沒有將雙精度轉換爲字符串。

1

要避免此錯誤,有必要爲Text屬性分配值Order.GetAmountDue()。此屬性包含文本框的值:

textBox3.Text = aOrder.GetAmountDue();

因爲有必要保持各類型之間的兼容性,所以你不能爲TextBox分配Double,但你可以指定一個Doublestring(以這種情況下的Text財產其一個string)。

也許你需要格式化的價值,更多詳細信息請點擊此鏈接: Double.ToString

1

除了文本框的問題,我也不認爲你應該返回public方法,而不是itself.ie

public double TaxDue() 
     { 
      const double TAX = .073; 
      double taxDue = (this.InputOrder() * TAX); 
      return TaxDue(); 
     } 

你應該有

public double TaxDue() 
     { 
      const double TAX = .073; 
      double taxDue = (this.InputOrder() * TAX); 
      return taxDue; 
     } 

第一個實現不 合理。