2014-08-27 433 views
0

我是一名學生。我在創建零按鈕時遇到了麻煩。場景是這樣的,我們應該創建一個零按鈕,當你運行並單擊它時,它不應該顯示多餘的零像這樣... 000000000 ...直到你點擊零按鈕的次數。我想知道如何創建一個零按鈕,當你運行並點擊它時,它只顯示一個零(0)。我們的老師說沒有像這樣的數字...... 00001.111或000.15或0005或任何以零開始的任何數字。但我仍然希望我的Zero按鈕的功能如下... 100或5000或0.0006以及各種數字中的多個零。非常感謝!如何在Windows窗體計算器中創建計算器中的零按鈕

謝謝大家。這是我錯誤的解決方案。

private void Form1_Load(object sender, EventArgs e) 
    { 
    // oneBtn.Click += new EventHandler(btn_Click); 
    // twoBtn.Click += new EventHandler(btn_Click); 
    // threeBtn.Click += new EventHandler(btn_Click); 
    // fourBtn.Click += new EventHandler(btn_Click); 
    // fiveBtn.Click += new EventHandler(btn_Click); 
    // sixBtn.Click += new EventHandler(btn_Click); 
    // sevenBtn.Click += new EventHandler(btn_Click); 
    // eightBtn.Click += new EventHandler(btn_Click); 
    // nineBtn.Click += new EventHandler(btn_Click); 
     zeroBtn.Click += new EventHandler(btn_Click); 
    // pointBtn.Click += new EventHandler(btn_Click); 
    } 

void btn_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      Button btn = sender as Button; 

      switch (btn.Name) 
      { 
    //   case "oneBtn": 
    //    textBox_output.Text += "1"; 
    //    break; 
    //   case "twoBtn": 
    //    textBox_output.Text += "2"; 
    //    break; 
    //   case "threeBtn": 
    //    textBox_output.Text += "3"; 
    //    break; 
    //   case "fourBtn": 
    //    textBox_output.Text += "4"; 
    //    break; 
    //   case "fiveBtn": 
    //    textBox_output.Text += "5"; 
    //    break; 
    //   case "sixBtn": 
    //    textBox_output.Text += "6"; 
    //    break; 
    //   case "sevenBtn": 
    //    textBox_output.Text += "7"; 
    //    break; 
    //   case "eightBtn": 
    //    textBox_output.Text += "8"; 
    //    break; 
    //   case "nineBtn": 
    //    textBox_output.Text += "9"; 
    //    break; 
       case "zeroBtn": 
        textBox_output.Text += "0"; 
        break; 
    //   case "pointBtn": 
    //    if (!textBox_output.Text.Contains(".")) 
    //     textBox_output.Text += "."; 
    //    break; 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Sorry for the inconvenience, Unexpected error occured. Details:" + 
       ex.Message); 
     } 
    } 

,這是按鍵

private void textBox_output_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     int keycode; 
     keycode = e.KeyChar; 
     if (keycode >= 48 && keycode <= 57 || keycode == 8 || keycode == 32 || keycode == 46) 
     { 
      if (keycode == 46) 
       ++trackkeypoint; 
      if (trackkeypoint > 1) 
      { 
       if (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1) 
       { 
        e.Handled = true; 
        --trackkeypoint; 
       } 
      } 
     } 
     else e.Handled = true; 
    } 
+2

0按鈕是什麼?如果你想在這裏得到任何合理的答案,你需要顯示你的*相關的*代碼 – Sayse 2014-08-27 07:31:35

+0

@你應該告訴我們一些你到目前爲止所嘗試的以及遇到問題的地方 - 如果你能向我們展示正確的部分違規代碼會很好 – Carsten 2014-08-27 07:37:29

+0

http://www.dreamincode.net/forums/topic/32968-basic-calculator-in-c%23/ – jbutler483 2014-08-27 08:19:08

回答

1

在點擊按鈕(零按鈕),你應該檢查兩件事情。首先如果你有分隔符'。'你用IndexOf方法做的字符串。如果這個返回> 0,你有「。」並應加0.此後如果你沒有「。」在else方法中檢查字符串是否沒有值,如果爲真則加0。如果字符串不爲空並且不以0再次開始,則添加零。

case "zeroBtn": 
if(textBox_output.Text.IndexOf(".") > 0) 
{ 
    textBox_output.Text+="0"; 
} 
else 
{ 
    //edit: thanks for the comment 
    if(textBox_output.Text.ToString() == "") 
    { 
     textBox_output.Text+="0"; 
    } 
    else if(!textBox_output.Text.StartWith("0")) 
    { 
     textBox_output.Text+="0"; 
    } 
    else 
    { 
     //do nothing 
    } 
} 

希望這會有所幫助。

關於您在編輯時使用的鍵: 當鍵碼== 48(我認爲這是0的代碼)時,您應該進行相同的檢查。

+0

誰說有一個「號碼」(如果你不需要做任何事情,除了'number.ToString()'... – Carsten 2014-08-27 07:44:05

+0

@CarstenKönig,你是對的在這種情況下你應該添加一個檢查我會添加它,在回答 – mybirthname 2014-08-27 07:49:11

+0

那麼什麼是數字?一個字符串?如果是這樣,爲什麼要轉換爲字符串? – Reniuz 2014-08-27 07:53:31

0

我相信你正在使用的WinForms,但你需要添加額外的處理您的歸零按鈕,類似如下的

//If textbox starts doesn't start with 0 or Textbox 
//contains a decimal point then it is ok to add a zero 
if(!textBox_output.Text.StartsWith("0") || textBox_output.Text.Contains(".")) 
    textBox_output.Text += "0"; 

您還可以添加額外的錯誤處理時的文本框爲空,以允許零將被添加,以及其他號碼的其他處理,以取代現有的零號碼

if(textBox_output.Text.Length <= 1) 
    textBox_output.Text = "1"; 
else 
    textBox_output.Text += "1";