Announcement

Collapse
No announcement yet.

Hỏi cách bắt sự kiện kiểm tra giá trị trong textbox.

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

  • [C#] Hỏi cách bắt sự kiện kiểm tra giá trị trong textbox.

    Mọi người cho em hỏi em có 1 cái textbox bây giờ em chỉ muốn cho nhập số tự nhiên >=2 thì phải làm sao, nếu chỉ nhập số <=2 thì ngay lập tức sẽ có messagebox báo lỗĩ. còn nhập đúng thì sẽ làm tiếp, ở đây ý em là không cần qua 1 hàm sử lý lỗi nhập nào hết, cứ sau dấu nháy trong textbox để ta bắt đầu nhập giá trị mà ta nhập vào số<=2 thì nó báo lỗi ngay.
    htc - Hi Tech

  • #2
    keydowm hoặc textchange đều đc đó bạn
    Code:
    Không có chữ ký - nên để dòng này làm chữ ký

    Comment


    • #3
      làm sao bạn ?
      mình làm như sau, nhưng nó vẫn làm tiếp việc đằng sau khi nào đụng đến giá trị nó mới báo.

      Code:
                  int n = Int32.Parse(textbox.Text);//lay gia tri cua textbox
                  if (n <= 1)
                  {
                      MessageBox.Show("Loi ! Hay nhap lai gia tri!");
                  }
      htc - Hi Tech

      Comment


      • #4
        Originally posted by htc View Post
        làm sao bạn ?
        mình làm như sau, nhưng nó vẫn làm tiếp việc đằng sau khi nào đụng đến giá trị nó mới báo.

        Code:
                    int n = Int32.Parse(textbox.Text);//lay gia tri cua textbox
                    if (n <= 1)
                    {
                        MessageBox.Show("Loi ! Hay nhap lai gia tri!");
                    }
        Thế thôi. nhưng tốt nhất là đặt đoạn code trên trong sự kiện click vào nút Ok hay nút gì đó sau khi nhập xong!
        -----------------------------
        Mai Văn Khải
        Software Engineering, University Information of Technology
        a07d26eb5cbc98f77b36a461eb629456

        Comment


        • #5
          Bạn có thể chọn lưu giá trị hiện tại trong một biến textbox_old nào đó để restore mỗi khi nhập giá trị bất hợp lệ hoặc reset về một giá trị mặc định nào đó.
          Code:
                      int n = Int32.Parse(textbox.Text);//lay gia tri cua textbox
                      if (n <= 1)
                      {
                          MessageBox.Show("Loi ! Hay nhap lai gia tri!");
                          textbox.Text = textbox_old;
                          //textbox.Text = "1";
                      }
                      else textbox_old = textbox.Text;

          Comment


          • #6
            Originally posted by 10520094 View Post
            keydowm hoặc textchange đều đc đó bạn
            2 cái này xài sao bạn ? mình thử e.keydown, hay e.textchange mà không thấy gì hết, mong các pro giúp đỡ.
            Originally posted by 09520243 View Post
            Bạn có thể chọn lưu giá trị hiện tại trong một biến textbox_old nào đó để restore mỗi khi nhập giá trị bất hợp lệ hoặc reset về một giá trị mặc định nào đó.
            Code:
                        int n = Int32.Parse(textbox.Text);//lay gia tri cua textbox
                        if (n <= 1)
                        {
                            MessageBox.Show("Loi ! Hay nhap lai gia tri!");
                            textbox.Text = textbox_old;
                            //textbox.Text = "1";
                        }
                        else textbox_old = textbox.Text;
            cách này cũng hay nhưng nhưng chị tạm mà thôi, tự dưng tòi ra cái textbox nữa để ko, mà lại ko ngắn gọn cái winform
            Originally posted by 09520133 View Post
            Thế thôi. nhưng tốt nhất là đặt đoạn code trên trong sự kiện click vào nút Ok hay nút gì đó sau khi nhập xong!
            mình thì lại muốn nó trực tiếp kiểm tra chứ không qua nút Ok nào cả nếu nút Ok chúng ta viết luôn cái hàm xét cho nút đó cũng dk.
            htc - Hi Tech

            Comment


            • #7
              Originally posted by htc View Post
              2 cái này xài sao bạn ? mình thử e.keydown, hay e.textchange mà không thấy gì hết, mong các pro giúp đỡ.
              cách này cũng hay nhưng nhưng chị tạm mà thôi, tự dưng tòi ra cái textbox nữa để ko, mà lại ko ngắn gọn cái winform

              mình thì lại muốn nó trực tiếp kiểm tra chứ không qua nút Ok nào cả nếu nút Ok chúng ta viết luôn cái hàm xét cho nút đó cũng dk.
              nếu vậy thì cậu không nên cho thông báo bằng một MessageBox như thế! giả xử cậu kiểm tra trong sự kiện Textchange, gõ vào số 123, vừa gõ số 1 cái nó xuất ra cái hộp thông báo không hợp lệ. tức không? tôi nghĩ cậu dùng sự kiện textChange của textBox đó và thông báo lỗi trong một label hoặc pictureBox (hiển thị các icon lỗi hoặc hợp lệ, tùy vào giá trị nhập)
              -----------------------------
              Mai Văn Khải
              Software Engineering, University Information of Technology
              a07d26eb5cbc98f77b36a461eb629456

              Comment


              • #8
                Originally posted by htc View Post
                cách này cũng hay nhưng nhưng chị tạm mà thôi, tự dưng tòi ra cái textbox nữa để ko, mà lại ko ngắn gọn cái winform
                Biến kiểu string ko chứa được giá trị textbox.Text sao?

                Comment


                • #9
                  Originally posted by 09520243 View Post
                  Biến kiểu string ko chứa được giá trị textbox.Text sao?
                  quên mất, vừa test thấy đúng đấy, tạm thời thì cách của bác là 1 giải pháp.hix hix
                  htc - Hi Tech

                  Comment


                  • #10
                    tất cả những gì anh cần là đây.
                    có gì sai sót nhớ nhắc em nha, em đang coi WPF nên không rành Window form lém.
                    anh chọn sự kiện keypress.
                    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
                    {
                    char c = e.KeyChar;
                    if (char.IsDigit(c) == true) //day la 1 extension method kiem tra xem e co phai la 1 numb hay khong
                    {
                    int i = Convert.ToInt32(c.ToString());// chac an hon la Conver.Toint32(c)
                    if (i < 2)
                    e.Handled = true; //lệnh này xóa kí tự vừa nhập. nếu anh muốn hiển thị 1 messageBox thì viết luôn ở đây.
                    }
                    else
                    e.Handled = true;
                    }

                    Comment


                    • #11
                      thế này có phải là hay hơn không? đại khái là thế!

                      MediaFire is a simple to use free service that lets you put all your photos, documents, music, and video in a single place so you can access them anywhere and share them everywhere.
                      -----------------------------
                      Mai Văn Khải
                      Software Engineering, University Information of Technology
                      a07d26eb5cbc98f77b36a461eb629456

                      Comment


                      • #12
                        bài anh Khải chưa "mềm dẻo" ở chỗ này:
                        1. nếu nhập 1 kí tự khác số sẽ phát sinh 1 ngoại lệ. nên dùng try catch.
                        2. nếu nhập 1 số mà nó không đúng( <2) thì số đó vẫn nằm trong textBox, không được tự động xóa đi.

                        Comment


                        • #13
                          private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
                          {
                          char c = e.KeyChar; //nhan ki tu vua nhap
                          if (char.IsDigit(c) == true) // neu ki tu vua nhap la 1 so
                          {
                          int i = Convert.ToInt32(c.ToString()); // chuyen 1 ki tu sang so nguyen
                          if (i < 3)
                          {
                          e.Handled = true; //xoa ki tu sai.
                          MessageBox.Show("loi nhap sai");
                          }
                          }
                          else
                          {
                          e.Handled = true; //xoa ki tu sai.
                          MessageBox.Show("loi nhap sai");
                          }
                          }
                          đúng yêu cầu.

                          Comment


                          • #14
                            Originally posted by 11520327 View Post
                            bài anh Khải chưa "mềm dẻo" ở chỗ này:
                            1. nếu nhập 1 kí tự khác số sẽ phát sinh 1 ngoại lệ. nên dùng try catch.
                            2. nếu nhập 1 số mà nó không đúng( <2) thì số đó vẫn nằm trong textBox, không được tự động xóa đi.
                            bài của ạnh chỉ là
                            Originally posted by 09520133 View Post
                            ...đại khái là thế!
                            mấy cái em nói anh đều biết, xử lý dễ thôi. quan trọng là anh chỉ muốn thể hiện cái ý của chủ thớt theo cách làm của anh

                            P/s: Hạn chế dùng Try - catch
                            -----------------------------
                            Mai Văn Khải
                            Software Engineering, University Information of Technology
                            a07d26eb5cbc98f77b36a461eb629456

                            Comment


                            • #15
                              Code:
                              private void textBox1_KeyPress(object sender, KeyPressEventArgs e)        {
                                          char c = e.KeyChar; //nhan ki tu vua nhap
                                          if (char.IsDigit(c) == true) // neu ki tu vua nhap la 1 so
                                          {
                                              int i = Convert.ToInt32(c.ToString()); // chuyen 1 ki tu sang so nguyen
                                              if (i < 3)
                                              {
                                                  e.Handled = true; //xoa ki tu sai.
                                                  MessageBox.Show("loi nhap sai");
                                              }
                                          }
                                          else
                                          {
                                              e.Handled = true; //xoa ki tu sai.
                                              MessageBox.Show("loi nhap sai");
                                          }
                                      }
                              theo anh biết thì e.Handled = true; là khóa sự kiện keypress chứ không phải là xóa số, nếu muốn xóa thì đơn giản em chỉ cần gán textBox1.Text="";

                              code của em nếu làm thêm chút thì sẽ khắc phục đc việc nhập chữ (Tức là chỉ cho nhập số)
                              còn trong trường hợp này thì như anh nói phía trên

                              Originally posted by 09520133 View Post
                              ... giả xử cậu kiểm tra trong sự kiện Textchange, gõ vào số 123, vừa gõ số 1 cái nó xuất ra cái hộp thông báo không hợp lệ. tức không? ...
                              Last edited by 09520133; 25-09-2012, 00:15.
                              -----------------------------
                              Mai Văn Khải
                              Software Engineering, University Information of Technology
                              a07d26eb5cbc98f77b36a461eb629456

                              Comment

                              LHQC

                              Collapse
                              Working...
                              X