2012-10-25 82 views
0

我試圖根據各個條件驗證多個字段/控件。問題是我有單獨的標籤,指出基於特定控件而不是消息框的錯誤;有沒有更有效的方法來做到這一點?對單個控件使用多個條件語句並在公共方法中使用條件語句

下面是代碼:

if (txtPhone. Text. Length <= 0) 
{ 
lblPhoneRequired.Visible = true; 
} 
else 
{ 
lblPhoneRequired.Visible = false; 
} 

if (txtName. Text. Length <= 0) 
{ 
lblNameRequired. Visible = true; 
} 
else 
{ 
lblNameRequired. Visible = false; 
} 

最後我試圖包裝成這樣的公共方法如下:

public void validation() { 
if (txtPhone. Text. Length <= 0) 
{ 
lblPhoneRequired.Visible = true; 
} 
else 
{ 
lblPhoneRequired.Visible = false; 
} 

if (txtName. Text. Length <= 0) 
{ 
lblNameRequired. Visible = true; 
} 
else 
{ 
lblNameRequired. Visible = false; 
} 
} 

然後調用一個按鈕單擊事件的方法,但它不工作。

​​

的是一個新的領域,請與我的無知熊:

蓋伊

+0

目前還不清楚你想要完成什麼...... –

+0

這是ASP,winforms,WPF,silverlight,windows手機還是什麼? – Servy

+0

Windows窗體:使用Visual Studio,我問了兩件事。 1)這個代碼可以簡化,因爲我正在驗證單個控件,每個控件都有自己的錯誤標籤。 2)這可以在一個方法中工作嗎? - 謝謝! – Asynchronous

回答

3

你可以縮短代碼:

lblPhoneRequired.Visible = (txtPhone.Text.Length == 0); 
lblNameRequired.Visible = (txtName.Text.Length == 0); 

請注意,這不是多於或少於效率較低你的appoach,但它不那麼冗長,也許更可讀。

當然你也可以使用一個單一的控制有不同的錯誤信息:

lblError.Visible = (txtPhone.Text.Length == 0) 
        || (txtName.Text.Length == 0); 
if((txtPhone.Text.Length == 0) && (txtName.Text.Length == 0)) 
    lblError.Text = "Enter phone number and name"; 
else if(txtPhone.Text.Length == 0) 
    lblError.Text = "Enter phone number"; 
else if(txtName.Text.Length == 0) 
    lblError.Text = "Enter name"; 
else 
    lblError.Text = String.Empty; 

但是你應該有一個看看Validating事件和每一個控件具有CausesValidation財產。

+0

我忘了提及控件屬性中的錯誤標籤設置爲可見/錯誤。如果我使用單一控件,如果多個字段爲空但需要不同的錯誤消息會發生什麼情況:示例:名稱是必需的,還是需要電話? – Asynchronous

+0

@UnaverageGuy:編輯我的答案。 –

+0

非常感謝Tim! – Asynchronous

0
if (txtPhone. Text. Length <= 0) 
    lblPhoneRequired.Visible = lblNameRequired. Visible = true; 
else 
    lblPhoneRequired.Visible = lblNameRequired. Visible = false; 
+0

但是,如果用戶輸入沒有名稱'lblNameRequired'應該是可見的。 –