1

这是我第一次使用 C# 在 Visual Studio 上使用 Windows 窗体。我试图让我的表格有一个按钮,当您单击“计算到期金额”时,它将把计算出的内容放入“到期金额”字段中。但是,每当我说“textBox3 = aOrder.AmountDue()”时,它表示它不能将 double 转换为 System.Windows.Forms.TextBox。我如何适当地转换它?这是我的程序代码。

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();
      }
   }
}     
4

4 回答 4

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

假设 AmountDue() 返回一个 Double。

您有两个问题,您试图将实际的文本框对象设置为字符串而不是文本框的 .Text 属性,并且您没有将双精度转换为字符串。

于 2013-10-31T22:42:01.780 回答
1

textBox3是对象。该对象有各种方法(做东西)和属性(保存东西),特别textBox3.Text是你可以在框中设置文本的地方。记住MSDN是你的朋友。

于 2013-10-31T22:38:43.627 回答
1

为避免此错误,必须为 Text 属性分配值 Order.GetAmountDue()。此属性包含 TextBox 的值:

textBox3.Text = aOrder.GetAmountDue();

因为需要保持类型之间的兼容性,所以不能Double为 a 分配 a TextBox,但可以将 a 分配Double给 a string(在这种情况下,Text属性是 a string)。

也许您需要格式化值,有关更多信息,请参阅此链接: Double.ToString

于 2013-10-31T22:42:29.627 回答
1

除了文本框问题,我也不认为您应该返回公共方法本身。即,而不是

 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;
        }

第一个实现没有意义。

于 2013-10-31T23:07:08.403 回答