Trang 1 trên tổng số 7 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 61 kết quả

Đề tài: Chỉ cho phép nhập số vào textbox trong lập trình C#

  1. #1
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Smile Chỉ cho phép nhập số vào textbox trong lập trình C#

    Thông thường, người ta dùng textbox control để nhận tất cả giá trị số do người dùng nhập vào, nhưng đôi lúc người sử dụng vì 1 lý do nào đó đã nhập không đúng quy cách mà bạn giao kèo. Chẳng hạn, nhập 1 số lượng phần tử của mảng vào textbox, nhưng người ta lại nhập "5a" (dư chữ "a"), và chắc chắn chương trình của bạn sẽ bị lỗi. Làm sao để giải quyết tình huống này nhỉ. Bây giờ, chỉ với 1 thủ thuật đơn giản, bạn sẽ bảo textbox chỉ cho phép nhập số vào ô textbox.
    - Bước 1: tạo ứng dụng Windows Forms, thêm các textbox control tùy ý bạn
    - Bước 2: sau khi đã có (các) textbox, bạn hãy thụ lý tình huống KeyPress của (các) textbox này. Trong đó, bạn đưa thuộc tính Handled về true để chặn các cú nhấn phím không hợp lệ. Cụ thể code như sau:
    Visual C# Code:
    1.         private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    2.         {
    3.            
    4.             if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
    5.                 e.Handled = true;
    6.         }
    Char.IsDigit(e.KeyChar) --> kiểm tra xem phím vừa nhập vào textbox có phải là ký tự số hay không, hàm này trả về kiểu bool
    Char.IsContro(e.KeyChar) --> kiểm tra xem phím vừa nhập vào textbox có phải là các ký tự điều khiển (các phím mũi tên,Delete,Insert,backspace,space bar) hay không, mục đích dùng hàm này là để cho phép người dùng xóa số trong trường hợp nhập sai.

  2. #2
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Ai đó hướng dẫn rõ hơn về cái này đi, sao add hàm này vào rồi mà ko có tác dụng gì cả. Sự kiện textchange có cần phải gọi cái hàm này ko?

  3. #3
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Trích dẫn Nguyên bản được gửi bởi huynguyen Xem bài viết
    Ai đó hướng dẫn rõ hơn về cái này đi, sao add hàm này vào rồi mà ko có tác dụng gì cả. Sự kiện textchange có cần phải gọi cái hàm này ko?
    Cái mẫu ở trên là chỉ handle khi ấn key thôi, tức là nó check lúc keypress
    Anh có thể chuyển nó sang TextChange được mà.
    None!

  4. #4
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Tạo custom control để dành xài

    Visual C# Code:
    1.     class NumericTextBox : TextBox
    2.     {
    3.         public NumericTextBox()
    4.         {}
    5.  
    6.         protected override void OnKeyPress(KeyPressEventArgs e)
    7.         {
    8.             if (!Char.IsControl(e.KeyChar) && !Char.IsNumber(e.KeyChar))
    9.                 e.Handled = true;
    10.         }
    11.     }

    Sự kiện textchange có cần phải gọi cái hàm này ko?
    Không. TextChanged đâu có liên quan gì đến KeyPress ở đây đâu
    Keep moving forward!

    ... Retired ...

  5. #5
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Ko biết cách dùng cái này nên làm cái biểu thức chính quy tạm, nghiên cứu thêm >"<

  6. #6
    Ngày gia nhập
    10 2007
    Bài viết
    13

    Mặc định Chỉ cho phép nhập số vào textbox trong lập trình C#

    Nếu chỉ cần ngăn chặn người ta ko nhập số mà nhập chuỗi thì nên dùng try & catch để bắt lỗi và xuất thông báo cho người ta biết

  7. #7
    Ngày gia nhập
    09 2007
    Bài viết
    17

    Trích dẫn Nguyên bản được gửi bởi khacnam Xem bài viết
    Nếu chỉ cần ngăn chặn người ta ko nhập số mà nhập chuỗi thì nên dùng try & catch để bắt lỗi và xuất thông báo cho người ta biết
    try-catch chỉ dùng để bắt lỗi ngoại lệ thôi, chứ đâu thể "ép" nó để kiểm tra dữ liệu nhập vào.
    AI NÂNG MÌNH LÊN SẼ BỊ HẠ XUỐNG VÀ AI HẠ MÌNH XUỐNG SẼ ĐƯỢC NÂNG LÊN


  8. #8
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Điều cần làm là ko cho người dùng bấm được phím ký tự, chỉ được bấm các số từ 0 - 9 mà thôi. Xuất thông báo là trò trẻ con, ai mà chẳng làm được

  9. #9
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Các đoạn code trên cũng chưa ngăn được người dùng copy & paste 1 chuỗi toàn text không vào control !

  10. #10
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Các đoạn code trên cũng chưa ngăn được người dùng copy & paste 1 chuỗi toàn text không vào control !
    Oạch, cái này chắc chỉ mỗi mình anh TQN nghĩ ra . Có cách nào remove mấy cái ContextMenu đó không anh ? (và ngược lại là add vào)
    Keep moving forward!

    ... Retired ...

Các đề tài tương tự

  1. Chỉ cho phép nhập số vào TextBox - trong C#
    Gửi bởi dvbendoi trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 36
    Bài viết cuối: 17-03-2014, 10:42 AM
  2. Game Cách nhập chữ vào textbox trong XNA
    Gửi bởi viet013 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 11-04-2012, 07:22 PM
  3. Trả lời: 14
    Bài viết cuối: 10-10-2011, 03:58 PM
  4. Code cho ẩn kí tự khi nhập password vào textbox trong form đăng nhập
    Gửi bởi mrkiemhiep trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 16-03-2011, 11:10 PM
  5. Chỉ cho nhập số vào textbox trong lập trình C#?
    Gửi bởi ngoctuqb trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 24-11-2008, 09:40 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn