2013-10-31 39 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; 
     } 

第一个实现不 合理。