none
判斷textbox的內容資料 RRS feed

  • 問題

  • 假設有個textbox,當我輸入為"數字"+unit字串(ex:200unit,50unit)按下enter鍵才會執行,如果只輸入數字或其他單字則不會執行,

    我想到的寫法如下,但是執行出來有錯誤,請大大指導一下這錯誤的地方或者還有其他簡化的寫法。

    int=i;
    
    public static bool IsNumeric( string TextBoxValue)
     {
       try
         {
          int i = Convert .ToInt32(TextBoxValue);
           return true ;
          }
     catch
           {
               return false ;
             }
     }
    private void textBox_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar == (Char)Keys.Enter)
                {
                    if (textBox.Text == i+"unit")
                    {
                        MessageBox.Show("開始執行");
                    }
                    else
                    {
                        MessageBox.Show("fail");
                    }
                }
            }

    2017年6月19日 下午 11:47

解答

  • 再加上長度判斷:

    string s = textBox1.Text;
                int len = textBox1.Text.Length;
    
                int Number;
                if (len > 4 && int.TryParse(s.Substring(0, s.Length - 4), out Number) && s.EndsWith("unit"))
                {
                    //使用Number
                    MessageBox.Show("開始執行");
                }
                else
                {
                    MessageBox.Show("fail");
                }

    • 已標示為解答 末日鷹 2017年6月27日 下午 03:53
    2017年6月23日 上午 02:10

所有回覆

  • 您可以這樣做:

    private void button1_Click(object sender, EventArgs e)
            {
                string s = textBox1.Text;
    
                int Number;
                if (int.TryParse(s.Substring(0, s.Length - 4), out Number) && s.EndsWith("unit"))
                {
                    //使用Number
                    MessageBox.Show("開始執行");
                }            
                else
                {
                    MessageBox.Show("fail");
                }
            }

    2017年6月20日 上午 12:32
  • 利用這個方法我在輸入字串(xxx+unit)以外的內容,會出現以下錯誤,不會show message,請問是什麼問題?

    類型 'System.ArgumentOutOfRangeException' 的未處理例外狀況發生於 mscorlib.dll

    其他資訊: 長度不可以小於零。

    2017年6月20日 上午 01:39
  • 利用這個方法我在輸入字串(xxx+unit)以外的內容,會出現以下錯誤,不會show message,請問是什麼問題?

    類型 'System.ArgumentOutOfRangeException' 的未處理例外狀況發生於 mscorlib.dll

    其他資訊: 長度不可以小於零。

    我猜應該是在 s.Length - 4 這邊吧!!! 如果 s 的長度小於 4 就可能發生。
    2017年6月20日 上午 02:23
  • 利用這個方法我在輸入字串(xxx+unit)以外的內容,會出現以下錯誤,不會show message,請問是什麼問題?

    類型 'System.ArgumentOutOfRangeException' 的未處理例外狀況發生於 mscorlib.dll

    其他資訊: 長度不可以小於零。

    我猜應該是在 s.Length - 4 這邊吧!!! 如果 s 的長度小於 4 就可能發生。
    請問該如何修改能修正這個error呢?
    2017年6月20日 上午 02:33
  • 請問該如何修改能修正這個error呢?

    你自己有想法嗎?

    最簡單的方式是 先判斷結尾有沒有 unit

    if (s.EndsWith("unit") && int.TryParse(s.Substring(0, s.Length - 4), out Number))
    {
    //...
    }

    2017年6月20日 上午 03:20
  • 再加上長度判斷:

    string s = textBox1.Text;
                int len = textBox1.Text.Length;
    
                int Number;
                if (len > 4 && int.TryParse(s.Substring(0, s.Length - 4), out Number) && s.EndsWith("unit"))
                {
                    //使用Number
                    MessageBox.Show("開始執行");
                }
                else
                {
                    MessageBox.Show("fail");
                }

    • 已標示為解答 末日鷹 2017年6月27日 下午 03:53
    2017年6月23日 上午 02:10