冰楓論壇

標題: 新手剛接觸C# 寫了第一個程式計算機碰上小問題 [打印本頁]

作者: cpu66300    時間: 2018-10-6 17:54
標題: 新手剛接觸C# 寫了第一個程式計算機碰上小問題
本帖最後由 cpu66300 於 2018-10-7 09:06 編輯

以下是我的問題:
555555555555555555.PNG
66666666666666.PNG


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

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

以下 附上我的程式碼:

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
你 0 按鈕的 click function 是 button_Click 嗎?

我建議你把按鈕的名稱都自訂好,你如果是預設的編號的話其他人怎麼會知道你的 button11 是哪一顆按鈕呢?這樣其他人還要去多花時間去猜測你的哪個按鈕是哪個名稱。
作者: cpu66300    時間: 2018-10-7 09:00
xmax 發表於 2018-10-7 00:16
你 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
針對你說的小數點的問題,我的想法是把小數點按鈕的 click function 給另外寫。

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

  8.     if (Result_txt.Text.IndexOf(".") == -1) {
  9.         // If Result_txt hasn't "." then
  10.         Result_txt.Text += ".";
  11.     }
  12. }
複製代碼

作者: cpu66300    時間: 2018-10-8 01:17
xmax 發表於 2018-10-7 10:59
針對你說的小數點的問題,我的想法是把小數點按鈕的 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 += ".";


        }


這樣 就成功了  





歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓