Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Xác nhận tính hợp lệ của dữ liệu nhập vào TextBox trong lập trình C#

  1. #1
    No Avatar
    baokhanhk28 Khách

    Mặc định Xác nhận tính hợp lệ của dữ liệu nhập vào TextBox trong lập trình C#

    ? Bạn cần cảnh báo cho người dùng khi có dữ liệu không hợp lệ được nhập vào một điều kiểm (như TextBox).
    » Sử dụng ErrorProvider để hiển thị icon lỗi kế bên điều kiểm có lỗi. Kiểm tra lỗi trước khi cho phép người dùng tiếp tục.
    Có một số cách để bạn có thể thực hiện việc xác nhận tính hợp lệ trong một ứng dụng dựa-trên-Windows. Một cách tiếp cận là đáp ứng các sự kiện điều khiển việc xác nhận tính hợp lệ và không cho người dùng thay đổi focus từ điều kiểm này sang điều kiểm khác nếu lỗi xảy ra. Một cách tiếp cận khác là dựng cờ cho điều kiểm có lỗi theo một cách nào đó để người dùng có thể nhìn thấy tất cả lỗi một lượt. Bạn có thể sử dụng cách tiếp cận này trong .NET với điều kiểm ErrorProvider.
    ErrorProvider là một điều kiểm provider đặc biệt, được sử dụng để hiển thị icon lỗi kế bên điều kiểm có lỗi. Bạn có thể hiển thị icon lỗi kế bên một điều kiểm bằng cách sử dụng phương thức ErrorProvider.SetError, và chỉ định điều kiểm thích hợp và một chuỗi thông báo lỗi. ErrorProvider sẽ hiển thị icon lỗi một cách tự động ở bên phải điều kiểm. Khi người dùng đưa chuột lên icon lỗi, sẽ xuất hiện thông báo chi tiết (xem hình 6.11).
    Chỉ cần thêm ErrorProvider vào form, bạn có thể sử dụng nó để hiển thị icon lỗi kế bên một điều kiểm bất kỳ. Để thêm ErrorProvider, bạn có thể kéo nó vào khay thành phần (component tray) hoặc tạo nó bằng mã. Đoạn mã dưới đây kiểm tra nội dung của TextBox mỗi khi một phím được nhấn, xác nhận tính hợp lệ của TextBox này bằng một biểu thức chính quy (kiểm tra nội dung trong TextBox có tương ứng với một địa chỉ e-mail hợp lệ hay không). Nếu nội dung này không hợp lệ, ErrorProvider được sử dụng để hiển thị thông báo lỗi. Nếu nội dung này hợp lệ, thông báo lỗi hiện có trong ErrorProvider sẽ bị xóa. Cuối cùng, phương thức thụ lý sự kiện Click cho nút OK sẽ duyệt qua tất cả các điều kiểm trên form và xác nhận rằng không điều kiểm nào có lỗi trước khi cho phép ứng dụng tiếp tục.


    Visual C# Code:
    1. using System;
    2. using System.Windows.Forms;
    3. using System.Text.RegularExpressions;
    4.  
    5. public class ErrorProviderValidation : System.Windows.Forms.Form {
    6.  
    7.     // (Bỏ qua phần mã designer.)
    8.  
    9.     private void txtEmail_TextChanged(object sender,
    10.       System.EventArgs e) {
    11.    
    12.         Regex regex;
    13.         regex = new Regex(@"\S+@\S+\.\S+");
    14.  
    15.         Control ctrl = (Control)sender;
    16.         if (regex.IsMatch(ctrl.Text)) {
    17.             errProvider.SetError(ctrl, "");
    18.         }
    19.         else {
    20.             errProvider.SetError(ctrl,
    21.               "This is not a valid e-mail address.");
    22.         }
    23.     }
    24.  
    25.     private void cmdOK_Click(object sender, System.EventArgs e) {
    26.    
    27.         string errorText = "";
    28.         bool invalidInput = false;
    29.  
    30.         foreach (Control ctrl in this.Controls) {
    31.        
    32.             if (errProvider.GetError(ctrl) != "")
    33.             {
    34.                 errorText += "   * " + errProvider.GetError(ctrl) + "\n";
    35.                 invalidInput = true;
    36.             }
    37.         }
    38.            
    39.         if (invalidInput) {
    40.        
    41.             MessageBox.Show(
    42.               "The form contains the following unresolved errors:\n\n" +
    43.               errorText, "Invalid Input", MessageBoxButtons.OK,
    44.               MessageBoxIcon.Warning);
    45.         }
    46.         else {
    47.             this.Close();
    48.         }
    49.     }
    50. }

    Trích từ "Các giải pháp lập trình C#"

  2. #2
    No Avatar
    baokhanhk28 Khách

    Mặc định Chỉ cho phép nhập số vào TextBox

    ? Bạn cần tạo một TextBox sao cho TextBox này bỏ qua tất cả các cú nhấn phím không phải số.
    » Thêm phương thức thụ lý sự kiện TextBox.KeyPress. Trong phương thức này, thiết lập thuộc tính KeyPressEventArgs.Handled là true để bỏ qua cú nhấn phím không hợp lệ.
    Cách tốt nhất để hiệu chỉnh đầu vào bất hợp lệ là không cho nó được nhập ngay từ đầu. Điều này dễ dàng hiện thực với TextBox vì nó cung cấp sự kiện KeyPress, sự kiện này xảy ra sau khi cú nhấn phím được tiếp nhận nhưng trước khi nó được hiển thị. Bạn có thể sử dụng thông số sự kiện KeyPressEventArgs để hủy bỏ cú nhấn phím không hợp lệ bằng cách đặt thuộc tính Handled là true.
    Để đầu vào chỉ là số, bạn cần cho phép một cú nhấn phím chỉ khi nó tương ứng với một số (0 đến 9) hoặc một phím điều khiển đặc biệt (như phím delete hoặc mũi tên). Ký tự vừa nhấn được cấp cho sự kiện KeyPress thông qua thuộc tính KeyPressEventArgs.KeyChar. Bạn có thể sử dụng hai phương thức tĩnh của lớp System.Char là IsDigit và IsControl để kiểm tra nhanh ký tự.
    Dưới đây là phương thức thụ lý sự kiện mà bạn sẽ sử dụng để ngăn đầu vào không phải số:
    Visual C# Code:
    1. private void textBox1_KeyPress(object sender,
    2.   System.Windows.Forms.KeyPressEventArgs e) {
    3.  
    4.     if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar)) {
    5.         e.Handled = true;
    6.     }
    7. }

    Chú ý rằng đoạn mã này bỏ qua dấu phân cách thập phân. Để cho phép ký tự này, bạn cần sửa lại đoạn mã như sau:
    Visual C# Code:
    1. // Lấy ký tự phân cách thập phân trên nền này
    2. // ("." đối với US-English).
    3.  
    4. string decimalString =
    5.   Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalSeparator;
    6. char decimalChar = Convert.ToChar(decimalString);
    7.  
    8. if (Char.IsDigit(e.KeyChar) || Char.IsControl(e.KeyChar)) {}
    9. else if (e.KeyChar == decimalString &&
    10.   textBox1.Text.IndexOf(decimalString) == -1) {}
    11.     e.Handled = true;
    12. }

    Đoạn mã này chỉ cho phép một dấu phân cách thập phân, nhưng nó không giới hạn số chữ số có thể được dùng. Nó cũng không cho phép nhập số âm (bạn có thể thay đổi điều này bằng cách cho phép dấu trừ “-” là ký tự đầu tiên). Nhớ rằng, đoạn mã này cũng giả định bạn đã nhập không gian tên System.Threading.

    Trích từ "Các giải pháp lập trình C#"

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

  1. Chỉ cho phép nhập số vào textbox trong lập trình C#
    Gửi bởi neverland87 trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 60
    Bài viết cuối: 09-11-2014, 02:19 PM
  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. Lấy giá trị đã nhập vào TextBox trong C#
    Gửi bởi vuthanhtrung90 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 22-03-2011, 08:39 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. Kiểm tra giá trị nhập vào là dạng số trong textbox
    Gửi bởi nhatnghe_thuong trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 24-02-2011, 11:58 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