Announcement

Collapse
No announcement yet.

Nhập số vào textbox

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C#] Nhập số vào textbox

    Có ai biết cách để cho textbox chỉ nhận chữ số (dương và âm), 1 dấu chấm thập phân, khi copy một dòng chữ và phải chuột vô textbox chọn paste thì không được phép xuất hiện dòng copy đó.
    Mọi người cùng thảo luận nhé :doubt:

  • #2
    Tham khảo cái mình viết nè, nhưng vụ Right-Click thì bó tay
    ChiNhapSo.zip

    Comment


    • #3
      Code:
              private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
              {
                  if (!(char.IsControl(e.KeyChar) || char.IsDigit(e.KeyChar) || e.KeyChar == '-' || e.KeyChar == '.'))
                  {
                      e.Handled = true;
                  }
              }
      
              string old_text = "";
              private void textBox1_TextChanged(object sender, EventArgs e)
              {
                  try
                  {
                      float f = float.Parse(textBox1.Text);
                      old_text = textBox1.Text;
                  }
                  catch (FormatException)
                  {
                      textBox1.Text = old_text;
                  }
              }
      Blog: http://khuongntrd.blogspot.com/ Email: khuongntrd@gmail.com
      Facebook: https://www.facebook.com/dkuns2

      Comment


      • #4
        Originally posted by 10520413 View Post
        Tham khảo cái mình viết nè, nhưng vụ Right-Click thì bó tay
        [ATTACH]4392[/ATTACH]
        Code của bạn cho phép gõ nhiều dấu chấm (.) nhiều dấu trừ (-) như vậy là không hợp lệ rồi

        Originally posted by 11520185 View Post
        Code:
                private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
                {
                    if (!(char.IsControl(e.KeyChar) || char.IsDigit(e.KeyChar) || e.KeyChar == '-' || e.KeyChar == '.'))
                    {
                        e.Handled = true;
                    }
                }
        
                string old_text = "";
                private void textBox1_TextChanged(object sender, EventArgs e)
                {
                    try
                    {
                        float f = float.Parse(textBox1.Text);
                        old_text = textBox1.Text;
                    }
                    catch (FormatException)
                    {
                        textBox1.Text = old_text;
                    }
                }
        Code của bạn không cho phép nhập số âm (nếu có thì phải gõ số dương xong mới gõ dấu trừ đằng trước) Lúc xóa số thì số đứng đầu không xóa được.

        Không lẽ bó tay với nó sao ta

        Comment


        • #5
          Originally posted by 10520589 View Post
          Code của bạn không cho phép nhập số âm (nếu có thì phải gõ số dương xong mới gõ dấu trừ đằng trước) Lúc xóa số thì số đứng đầu không xóa được.

          Không lẽ bó tay với nó sao ta
          Sửa lại textBox1_TextChanged
          Code:
                  private void textBox1_TextChanged(object sender, EventArgs e)
                  {
                      string text = textBox1.Text;
                      if (text.StartsWith("-"))
                          text = text.Insert(1, "0");
                      else
                          text = text.Insert(0, "0");
                      if (IsInt(text))
                      {
                      }
                      else
                          if (IsFloat(text))
                          {
                          }
                          else
                          {
                              textBox1.Text = old_text;
                              textBox1.SelectionStart = textBox1.Text.Length;
                              textBox1.ScrollToCaret();
                              return;
                          };
                      old_text = textBox1.Text;
                  }
                  bool IsInt(string text)
                  {
                      try
                      {
                          int.Parse(text);
                          return true;
                      }
                      catch (FormatException)
                      {
                          return false;
                      }
                  }
                  bool IsFloat(string text)
                  {        
                      try
                      {
                          float.Parse(text);
                          return true;
                      }
                      catch (FormatException)
                      {
                          return false;
                      }        
                  }
          Last edited by 11520185; 19-09-2012, 01:02.
          Blog: http://khuongntrd.blogspot.com/ Email: khuongntrd@gmail.com
          Facebook: https://www.facebook.com/dkuns2

          Comment


          • #6
            private void txtInString_KeyPress(object sender, KeyPressEventArgs e)
            {
            string ValidChar = "0123456789" + Convert.ToChar(8).ToString() + Convert.ToChar(32).ToString() + Convert.ToChar(45).ToString() + Convert.ToChar(46).ToString();
            if (!ValidChar.Contains(e.KeyChar))
            e.Handled = true;
            }
            vẫn còn chỗ nhập nhiều . và - ,nhập dấu trừ phía sau số
            82428-You Are The Apple of My Eye

            Comment


            • #7
              Dùng Regex cho đỡ rắc rối :sure::sure::sure:

              Code:
              ^\-?[0-9]{1,3}(\,[0-9]{3})*(\.[0-9]+)?$|^[0-9]+(\.[0-9]+)?$
              Formatted Number with "," as thousand separator and "." as decimal separator. now accept numbers without separators of thousands.

              Comment


              • #8
                Các bạn cho mình hỏi tí là mình có 3 cái textbox tên là txt1, txt2, txt3, mình đã đặt trạng thái cho cái txt1 là txt1.focus(); mà khi debug dấu nháy con trỏ nó cứ ở texbox 2 trước sau đó nhấn tab là nó xuống textbox3 bây giờ phải làm sao để khi debug nó ở text1 đầu tiên ?
                htc - Hi Tech

                Comment


                • #9
                  Originally posted by htc View Post
                  Các bạn cho mình hỏi tí là mình có 3 cái textbox tên là txt1, txt2, txt3, mình đã đặt trạng thái cho cái txt1 là txt1.focus(); mà khi debug dấu nháy con trỏ nó cứ ở texbox 2 trước sau đó nhấn tab là nó xuống textbox3 bây giờ phải làm sao để khi debug nó ở text1 đầu tiên ?
                  Đặt lại tabIndex cho các TextBox đi
                  -----------------------------
                  Mai Văn Khải
                  Software Engineering, University Information of Technology
                  a07d26eb5cbc98f77b36a461eb629456

                  Comment

                  LHQC

                  Collapse
                  Working...
                  X