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 プロパティではなく、実際のテキストボックスオブジェクトを文字列に設定しようとしていて、double を文字列に変換していないという 2 つの問題がありました。

于 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();

タイプ間の互換性を維持する必要があるため、 aDoubleに a を割り当てることはできませんが、 a に a を割り当てるTextBoxことはできます(この場合、プロパティは aです)。DoublestringTextstring

値をフォーマットする必要があるかもしれません。詳細については、次のリンクを参照してください: Double.ToString

于 2013-10-31T22:42:29.627 に答える
1

Textbox の問題に加えて、パブリック メソッド自体を返す必要はないと思います。

 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 に答える