首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Effective C# 原則 39:使用 .NET 驗證 (下)

     編輯:關於C語言

正則表達式解析:美國電話號碼

((\(\s*\d{3}\s*\))|(\d{3}))-?\s*\d{3}\s*-\s*\d{4}

  • ((\(\s*\d{3}\s*\))|(\d{3})):區號,允許 (XXX) 或 XXX,數字前後可有空白。
  • -?:可選連字號。
  • \s*\d{3}\s*-\s*\d{4}:交換局碼 3 碼、號碼 4 碼,中間可有空白與連字號。

Windows Forms 驗證模式

掛接 Control.Validating 事件或覆寫 OnValidating:

private void textBoxName_Validating(object sender, CancelEventArgs e)
{
    string error = null;
    if (textBoxName.Text.Length == 0)
    {
        error = "Please enter a name";
        e.Cancel = true;
    }
    this.errorProviderAll.SetError(textBoxName, error);
}

關鍵細節

  1. CausesValidation:所有控制項應為 true,除非是 Cancel 按鈕,否則使用者無法取消對話方塊。
  2. 強制驗證所有控制項:OK 按鈕需遞迴呼叫 Validate(),避免使用者直接點 OK 跳過驗證。
private void buttonOK_Click(object sender, EventArgs e)
{
    ValidateAllChildren(this);
}
private void ValidateAllChildren(Control parent)
{
    if (this.DialogResult == DialogResult.None) return;
    foreach (Control c in parent.Controls)
    {
        c.Focus();
        if (!this.Validate()) { this.DialogResult = DialogResult.None; return; }
        ValidateAllChildren(c);
    }
}

DataGrid/DataSet 整合

設計時設定 ErrorProvider.DataSource、DataMember,或執行時呼叫 BindToDataAndErrors。透過 DataRow.RowError、SetColumnError 顯示錯誤圖示。

結語

使用者輸入不可信,.NET 提供完整驗證工具,善用框架功能減少自寫程式碼,全方位驗證所有輸入。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved