cpu66300 發表於 2018-10-6 17:54:32

新手剛接觸C# 寫了第一個程式計算機碰上小問題

本帖最後由 cpu66300 於 2018-10-7 09:06 編輯

以下是我的問題:




按了一下 小數點  0就不見了直接秀出 "." 如果要打 0.5時候 該怎麼寫

還有 該怎麼寫 小數點 出現一次而已呢?
新手剛接觸C#  寫的第一個程式 碰上的問題    請高手幫幫忙  感謝{:8_318:}{:8_318:}{:8_318:}

以下 附上我的程式碼:

public partial class Form1 : Form
    {
        Double value = 0;
        String op = "";
        bool op_pressed = false;
        public Form1()
        {
            InitializeComponent();
        }

        private void button_Click(object sender, EventArgs e)       <<<< 0~9  OR "."的按鈕
        {
            if ((result.Text == "0")||(op_pressed))
                result.Clear();
            op_pressed = false;
            Button b = (Button)sender;
            result.Text = result.Text +b.Text;               
                                                                  //<<<< 這邊我有試著打 if (result.Text.IndexOf(".") < 0) ;
                                                                 //  {
                                                                                result.Text =  result.Text+".";          結果 更慘 多一個 "."
                                                                         }                              

}

        private void button11_Click(object sender, EventArgs e)    <<<<CE鈕
        {
            result.Text = "0";
        }

        private void op_click(object sender, EventArgs e)   <<<<+ - * / 鈕
        {
            Button b = (Button)sender;
            op = b.Text;
            value = Double.Parse(result.Text);
            op_pressed = true;
        }

        private void button13_Click(object sender, EventArgs e)
        {
            switch(op)
            {
                case "+":
                    result.Text = (value + Double.Parse(result.Text)).ToString();
                    break;
                case "-":
                    result.Text = (value - Double.Parse(result.Text)).ToString();
                    break;
                case "*":
                    result.Text = (value * Double.Parse(result.Text)).ToString();
                    break;
                case "/":
                    result.Text = (value / Double.Parse(result.Text)).ToString();
                    break;
                default:
                    break;
                   }
            op_pressed = false;
        }

        private void button10_Click(object sender, EventArgs e)      <<<<C鈕
        {
            result.Text = "0";
            value = 0;
        }
    }
}



xmax 發表於 2018-10-7 00:16:42

你 0 按鈕的 click function 是 button_Click 嗎?

我建議你把按鈕的名稱都自訂好,你如果是預設的編號的話其他人怎麼會知道你的 button11 是哪一顆按鈕呢?這樣其他人還要去多花時間去猜測你的哪個按鈕是哪個名稱。

cpu66300 發表於 2018-10-7 09:00:42

xmax 發表於 2018-10-7 00:16 static/image/common/back.gif
你 0 按鈕的 click function 是 button_Click 嗎?

我建議你把按鈕的名稱都自訂好,你如果是預設的編號的話 ...

式的   我把 0~9 都用 button_Click
+ - * / 都用   button13_Click  OR  op_click
button10_Click   是 C 鈕
button11_Click   是 CE 鈕

謝謝大大 提醒   小弟 記下了  3q

xmax 發表於 2018-10-7 10:59:50

針對你說的小數點的問題,我的想法是把小數點按鈕的 click function 給另外寫。

這是我小數點按鈕的click事件private void Dot_btm_Click(object sender, EventArgs e)
{
    // If Result is 0 or op_pressed is true,
    // then clear display.
    if ((Result_txt.Text == string.Empty) || op_pressed)
        Result_txt.Text = "0.";
    op_pressed = false;

    if (Result_txt.Text.IndexOf(".") == -1) {
        // If Result_txt hasn't "." then
        Result_txt.Text += ".";
    }
}

cpu66300 發表於 2018-10-8 01:17:02

xmax 發表於 2018-10-7 10:59 static/image/common/back.gif
針對你說的小數點的問題,我的想法是把小數點按鈕的 click function 給另外寫。

這是我小數點按鈕的click ...

感謝大大的ˊ交的寫法ˋ  但是我又稍微修改了 一點點  因為 我把  "." 的按鈕 改回 原本的 Click  的名稱而已


  private void button17_Click(object sender, EventArgs e)
        {

            if ((result.Text == String.Empty) || op_pressed)
                result.Text = "0";
            op_pressed = false;

            if(result.Text.IndexOf(".") ==-1)

                result.Text += ".";


        }


這樣 就成功了  {:8_290:}
頁: [1]
查看完整版本: 新手剛接觸C# 寫了第一個程式計算機碰上小問題