none
選擇和核取方塊應用-點餐系統--字串被覆蓋 RRS feed

  • 問題

  • using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace 五章習題點餐系統
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                button1.Text = ("輸入");
                button2.Text = ("完成");
                button3.Text = ("清除");
                groupBox1.Text = ("主菜");
                groupBox2.Text = ("湯");
                groupBox3.Text = ("選項");
                radioButton1.Text = ("海鮮義大利麵240元");
                radioButton2.Text = ("碳烤雞排170元");
                radioButton3.Text = ("香煎豬排200元");
                radioButton4.Text = ("洋蔥湯40元");
                radioButton5.Text = ("蘑菇湯50元");
                checkBox1.Text = ("假日加成");
                checkBox2.Text = ("VIP會員");
                button2.Enabled = false;
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                checkBox1.Checked = false;
                checkBox2.Checked = false;
                radioButton1.Checked = false;
                radioButton2.Checked = false;
                radioButton3.Checked = false;
                radioButton4.Checked = false;
                radioButton5.Checked = false;
                textBox1.Clear();
                
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                if(textBox1.Text.Length>1)
    
                    button2.Enabled =true;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
               <span style="text-decoration:underline"> </span><strong><span style="text-decoration:underline">string ab = "";</span></strong><span style="text-decoration:underline">
                </span><strong><span style="text-decoration:underline">int a = 0;</span></strong>
                if (radioButton1.Checked == true)
                {
                    ab += radioButton1.Text + Environment.NewLine;
                    a += 240;
                }
                else if (radioButton2.Checked == true)
                {
                    ab += radioButton2.Text + Environment.NewLine;
                    a += 170;
                }
                else if (radioButton3.Checked == true)
                {
                    ab += radioButton3.Text + Environment.NewLine;
                    a += 200;
                }
                if (radioButton4.Checked == true)
                {
                    ab += radioButton4.Text + Environment.NewLine + "========================" + Environment.NewLine;
                    a += 40;
                }
                else
                    ab += radioButton5.Text + Environment.NewLine + "========================" + Environment.NewLine;
                a += 50;
                string bc = "";
                bc = "合計" + a + "元" + Environment.NewLine;
                double b = 0;
                if (checkBox1.Checked == true)
                {
                    b = 1.1;
                    bc += "假日加收一成" + Environment.NewLine;
                }
                double c = 0;
                
                if (checkBox2.Checked==true)
                {
                    c = 0.9;
                    bc += "貴賓可享九折" + Environment.NewLine;
                }
                   double d=0;
    
                   if (checkBox1.Checked == true && checkBox2.Checked == true)
                       d = a*b*c;
                   if (checkBox1.Checked == false && checkBox2.Checked == false)
                       d = a;
                   if (checkBox1.Checked == true && checkBox2.Checked == false)
                       d = a * b;
                   if (checkBox1.Checked == false && checkBox2.Checked == true)
                       d = a * c;
    
                textBox1.Text = (ab + bc + "========================="+"\r\n"+"實收"+d.ToString("0.00")+"元");
    
            }
        }
    }
    
    
    問題在關鍵在…string ab;
    我第一次執行完成後,ab的內容正常顯示於,text1.bot中
    但當我再重選再點執行後,先前的string ab;應該是被 sting ab="";所覆蓋。
    剛剛注意了一下,連數字一樣也只會顯示第二次按執行的結果。
    無法把第一次加上第二次的資料一起顯示。
    是我宣告有問題還是寫法有誤呢?

    我試在將宣告拉至
    private void Form1_Load(object sender, EventArgs e)
    但這樣會出現 ab=目前不在內容中。

    無法貼圖,請見諒!請幫我找找問題在那裡?

    剛剛翻找之前的string 宣告。

    之前的寫法 sting ab; 不會出現錯誤。

    但如果上面的程式寫string ab;
    會出現以下錯誤

    使用未指定的區域變數 

    劃線處,是我懷疑重覆執行,被覆蓋的原因?
    不知道如何解決


    2010年2月28日 上午 10:00

解答

  • string ab = "";

            private void button1_Click(object sender, EventArgs e)
            {
    

    移到事件外,宣告為全域變數試試...

    • 已標示為解答 raytai 2010年2月28日 上午 10:25
    2010年2月28日 上午 10:09

所有回覆