2013-11-02 78 views
0

我想重置按钮我的C#Windows窗体。但是,当我有明确的文本框用这样的代码:如何在C#Windows窗体中创建重置按钮?

 textBox1.Clear(); 
     textBox2.Clear(); 
     textBox3.Clear(); 
     textBox4.Clear(); 
     textBox5.Clear(); 
     textBox6.Clear(); 

那么,它给了我下面的错误:“输入字符串的不正确的格式”

这里是我的代码:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Collections; 

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

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void formTitle_Click(object sender, EventArgs e) 
     { 

     } 

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

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


     //amount of Pizzas label 
     private void label1_Click(object sender, EventArgs e) 
     { 

     } 

     //form load 
     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 

     //sales tax label 
     private void label3_Click(object sender, EventArgs e) 
     { 

     } 

     //text in box to the right of "Amount of Pizzas" 
     private void textBox1_TextChanged(object sender, EventArgs e) 
     { 
      aOrder.numberOfPizzas = int.Parse(textBox1.Text); 
     } 

     //text in box to the right of "Amount of Cokes" 
     private void textBox2_TextChanged(object sender, EventArgs e) 
     { 
      aOrder.numberOfCokes = int.Parse(textBox2.Text); 
     } 

     //text in box to the right of "Sales Tax" 
     private void textBox4_TextChanged(object sender, EventArgs e) 
     { 

     } 

     //File Tool Strip Menu 
     private void fileToolStripMenuItem_Click(object sender, EventArgs e) 
     { 

     } 

     //amount of cokes label 
     private void label2_Click(object sender, EventArgs e) 
     { 

     } 

     //reset button 
     private void button1_Click_1(object sender, EventArgs e) 
     { 
      //textBox1.Clear(); 
      //textBox2.Clear(); 
      //textBox3.Clear(); 
      //textBox4.Clear(); 
      //textBox5.Clear(); 
      //textBox6.Clear(); 
     } 

     //text in box to the right of "Amount Due" 
     private void textBox3_TextChanged_1(object sender, EventArgs e) 
     { 

     } 

     //text in box to the right of "Amount Paid" 
     private void textBox5_TextChanged(object sender, EventArgs e) 
     { 
      aOrder.getAmountPaid = double.Parse(textBox5.Text); 
     } 

     //click Calculate Change Due button 
     private void calculateChangeDue_Click(object sender, EventArgs e) 
     { 
      textBox6.Text = Convert.ToString(aOrder.GetChangeDue()); 
     } 

     //text in box to right of Change Due 
     private void textBox6_TextChanged(object sender, EventArgs e) 
     { 

     } 

     //amount due label 
     private void label4_Click(object sender, EventArgs e) 
     { 

     } 

     //amount paid label 
     private void label5_Click(object sender, EventArgs e) 
     { 

     } 

     //change due label 
     private void label6_Click(object sender, EventArgs e) 
     { 

     } 

     //click Calculate Amount Due 
     private void calculateAmountDue_Click(object sender, EventArgs e) 
     { 
      textBox3.Text = Convert.ToString(aOrder.GetAmountDue()); 
     } 

     //click Calculate Sales Tax 
     private void button2_Click(object sender, EventArgs e) 
     { 
      textBox4.Text = Convert.ToString(aOrder.TaxDue()); 
     } 


    } 
} 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Collections; 

namespace MidTermPizzas 
{ 
    class pizzaOrder 
    { 
     public int numberOfCokes 
     { 
      get; 

      set; 
     } 

     public int numberOfPizzas 
     { 
      get; 

      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 
     { get; set; } 

     public double GetChangeDue() 
     { 
      double getChangeDue = this.getAmountPaid - this.GetAmountDue(); 
      return getChangeDue; 
     } 
    } 
} 
+2

不要在TextChanged事件处理程序中调用double.Parse()。使用TryParse()并检查一个空字符串。 –

+1

与你的问题无关,但你应该摆脱所有未实现的_Click方法。双击设计器中的项目时会添加这些内容。 – Jizzle

回答

1
private void textBox1_TextChanged(object sender, EventArgs e){ 
    aOrder.numberOfPizzas = textBox1.Text == "" ? 0 : int.Parse(textBox1.Text); 
} 

执行相同的其他文本框,你应该使用TryParse,还可以使用1个TextChanged事件处理程序的所有文本框。

下面的代码使用TryParse,并假设如果解析失败,则默认值将是0

private void textBox1_TextChanged(object sender, EventArgs e){ 
    int v; 
    if(int.TryParse(textBox1.Text, out v)){ 
    aOrder.numberOfPizzas = v; 
    } else aOrder.numberOfPizzas = 0; 
} 
0

要么使用的TryParse其他答案的建议,或将0用于数字输入文本框您明确的方法。另一种方法是使用MaskedTextBox作为用于数字输入的文本框。

相关问题