2016-11-13 53 views
-1

我在努力解決爲什麼我的代碼無法正常工作。這是一個學校作業。我被允許尋求幫助。我是編程新手。我正在使用visual studio 2015.我試圖獲取它,因此用戶只能被允許選擇一個複選框。我在此作業中有其他複選框,因此使用上次選中時不起作用。我沒有得到錯誤,它只是無所作爲。謝謝!複選框只有一個允許,代碼不能正常工作

我的複選框被命名爲checkBox1,checkBox2,...... 5

我的整個當前的代碼是:

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; 

namespace Chapter6Homework 
{ 
    public partial class IceCreamOrder : Form 
    { 
     public IceCreamOrder() 
     { 
      InitializeComponent(); 
     } 

     private void btn_Clear_Click(object sender, EventArgs e) 
     { 
      // Clear flavors by automatically selecting default button on Clear button click 
      rdbDefault.Checked = true; 

      // Clear toppings 
      checkBox_CookieDough.CheckState = CheckState.Unchecked; 
      checkBox_ChocolateSyrup.CheckState = CheckState.Unchecked; 
      checkBox_Marshmallows.CheckState = CheckState.Unchecked; 
      checkBox_OreoPieces.CheckState = CheckState.Unchecked; 
      checkbox_Sprinkles.CheckState = CheckState.Unchecked; 
      checkbox_Walnuts.CheckState = CheckState.Unchecked; 

      // Clear List Box 
      lstDisplay.Items.Clear(); 

      // Clear scoops 
      checkBox1.CheckState = CheckState.Unchecked; 
      checkBox2.CheckState = CheckState.Unchecked; 
      checkBox3.CheckState = CheckState.Unchecked; 
      checkBox4.CheckState = CheckState.Unchecked; 
      checkBox5.CheckState = CheckState.Unchecked; 
     } 

     private void btn_CalculateCost_Click(object sender, EventArgs e) 
     { 
      // Verify user selected a flavor 
      if (rdbDefault.Checked == true) 
      { 
       MessageBox.Show("Please select a flavor"); 
       return; 
      } 

      // Verify user seleted # of scoops 
      if (checkBox1.CheckState == CheckState.Unchecked && 
        checkBox2.CheckState == CheckState.Unchecked && 
        checkBox3.CheckState == CheckState.Unchecked && 
        checkBox4.CheckState == CheckState.Unchecked && 
        checkBox5.CheckState == CheckState.Unchecked) 
      { 
       MessageBox.Show("You must select a number of scoops. 1 is a must but 5 is recommended!"); 
       return; 
      } 

      //Verify user got the toppings they wanted if any 
      if (checkBox_ChocolateSyrup.CheckState == CheckState.Unchecked && 
       checkBox_CookieDough.CheckState == CheckState.Unchecked && 
       checkBox_Marshmallows.CheckState == CheckState.Unchecked && 
       checkBox_OreoPieces.CheckState == CheckState.Unchecked && 
       checkbox_Sprinkles.CheckState == CheckState.Unchecked && 
       checkbox_Walnuts.CheckState == CheckState.Unchecked) 
      { 
       DialogResult dr = MessageBox.Show("Are you sure you don't want toppings?", 
        "help", MessageBoxButtons.YesNo); 
       switch (dr) 
       { 
        case DialogResult.Yes: break; 
        case DialogResult.No: return; 
       } 
      } 

      // Declare Variables and constants 
      double flavorCost = FlavorCost(); 
      double toppingCost = ToppingCost(); 
      double scoops = Scoops() * flavorCost; 
      double subTotal = (flavorCost + toppingCost + scoops); 
      double salesTax = subTotal * .08; 
      double total = subTotal + salesTax; 

      // Display total price of order 
      lstDisplay.Items.Clear(); 
      lstDisplay.Items.Add("Total: " + total.ToString("C2")); 

      // Display total sales tax 
      lstDisplay.Items.Add(""); 
      lstDisplay.Items.Add("Sales Tax: " + salesTax.ToString("C2")); 

      // Display Flavor Cost 
      lstDisplay.Items.Add("Flavor:  " + flavorCost.ToString("C2")); 

      // Display Scoops Cost 
      lstDisplay.Items.Add("Scoops:  " + scoops.ToString("C2")); 

      // Display Toppings 
      lstDisplay.Items.Add("Toppings: " + toppingCost.ToString("C2")); 
     } 
     // Get flavor cost 
     Double FlavorCost() 
     { 
      if ((radioButton_Chocolate.Checked == true) || (radioButton_Strawberry.Checked == true)) 
       return 1.5F; 
      else if (radioButton_Vanilla.Checked == true) 
       return 1.25F; 
      else 
       return 0; 
     } 

     // Get num of scoops 
     Double Scoops() 
     { 
      if (checkBox1.Checked == true) 
       return 1; 
      else if (checkBox2.Checked == true) 
       return 2; 
      else if (checkBox3.Checked == true) 
       return 3; 
      else if (checkBox4.Checked == true) 
       return 4; 
      else if (checkBox5.Checked == true) 
       return 5; 
      else 
       return 0; 
     } 

     // Get Toppings 
     Double ToppingCost() 
     { 
      if ((checkBox_ChocolateSyrup.Checked == true) || 
       (checkBox_Marshmallows.Checked == true) || 
       (checkbox_Sprinkles.Checked == true)) 
       return .25F; 
      else if ((checkBox_OreoPieces.Checked == true) || 
        (checkBox_CookieDough.Checked == true) || 
        (checkbox_Walnuts.Checked == true)) 
       return .50F; 
      else 
       return 0; 
     } 

     private void IceCreamOrder_Load_1(object sender, EventArgs e) 
     { 
      //Set Default to true on load 
      rdbDefault.Checked = true; 
     } 

     internal class Sub 
     { 
     } 

     private void checkBox1_CheckedChanged(object sender, EventArgs e) 
     { 
      int numberChecked = 0; 
      CheckBox[] array = new 
      CheckBox[] { checkBox1, checkBox2, checkBox3, checkBox4, checkBox5 }; 
      for (int i = 0; i < array.Length; i++) 
      { 
       if 
       (array[i].Checked) 
        numberChecked++; 
       else if 
       (numberChecked > 1) 
        MessageBox.Show("You have checked " 
       + numberChecked.ToString() + " checkBoxes. Only one is allowed."); 
       else 
        return; 
      } 

     } 
    } 
} 
+0

開始使用調試器和單步執行代碼,第二個是你的代碼的問候格式到你的'如果有更多的一致性else blocks' third,look up what break or return' keyword is used and how to use it .. – MethodMan

+2

你的代碼似乎是正確的。你使用什麼技術?它是Windows窗體,WPF或其他等等。同時檢查出RadioButton,也許你正在尋找RadioButton的行爲。 – Emad

+0

我已經爲此項目添加了我的整個代碼。我知道我有多個問題,但複選框是我嘗試解決的第一個問題。我的代碼沒有錯誤。它什麼都不做。我確實有一些單選按鈕,但這些問題都是複選框。 – Jessie

回答

1

使用RadioButton與分組。

爲了讓您的解決方案的工作:(發送者是選擇複選框)

private void checkBox1_Checked(object sender, EventArgs e) 
{ 
var array = new CheckBox[] { checkBox1, checkBox2, checkBox3, checkBox4, checkBox5 }; 
foreach(var checkbox in array) 
{ 
    if(checkbox != sender){ 
     checkbox.IsChecked = false 
    } 
}