2015-08-31 2 views
-2

Я хочу проверить два маскированных текстовых поля. По крайней мере, один из них должен иметь ценность. У меня есть следующий код:C# || оператор не работает для скрытых текстовых полей

bool validatePhoneNumbers() 
{ 
    bool valid = false; 
    if (!txtClientFax.MaskCompleted || !txtClientMobile.MaskCompleted) 
    { 
      MessageBox.Show("Please enter telephone or mobile number under Client Section"); 
    } 
    return valid; 
} 

Если я тестирую отдельно без использования || оно работает. Я хочу проверить одновременно оба скрытых текстовых поля

+0

Вы не назначите действует до истинного – netaholic

+1

Согласно этой логике, * и * из них должен иметь значение. – David

+0

В этом коде нет ничего особенного, и это не связано с MaskedTextBoxes. Вы просто сравниваете булевы. Логическая логика относительно проста. Напишите _exactly_, что вы хотите, и объясните, что «не работает». Кроме того, пожалуйста, не используйте венгерскую нотацию (префикс 'txt'). – CodeCaster

ответ

1

Булевая логика является фундаментальной и простой. Предотвратите двойные негативы и напишите свой ввод. После этого вы можете упростить и уменьшить выражения.

bool faxEntered = txtClientFax.MaskCompleted; 
bool mobileEntered = txtClientMobile.MaskCompleted; 

bool neitherEntered = !faxEntered && !mobileEntered; 

if (neitherEntered) 
{ 
    // show alert 
} 

Над if() проверяет, как текстовые поля не имеют значения, введенного. Если он имеет один, то neitherEntered будет false.

Вы можете повернуть его вспять:

bool eitherEntered = faxEntered || mobileEntered; 

if (!eitherEntered) 
{ 
    // show alert 
} 
0
bool validatePhoneNumbers() 
{ 
bool valid = false; 
if (!(txtClientFax.MaskCompleted || txtClientMobile.MaskCompleted)) 
{ 
     MessageBox.Show("Please enter telephone or mobile number under Client Section"); 
} 
return valid; 
} 
Смежные вопросы