2015-06-01 7 views
-2

У меня есть 3 текстовых поля: textbox1, textbox2, textbox3. Пользователи разрешают заполнять информацию только в одном текстовом поле.Подтвердить ввод пользователя

private string determineSearchParameter() 
{ 
    //Execute statements if ALL textboxes are empty 
    if (string.IsNullOrWhiteSpace(textbox1.Text) && string.IsNullOrWhiteSpace(textbox2.Text) && 
     string.IsNullOrWhiteSpace(textbox3.Text)) 
    { 
     return "Please Enter a Search Parameter"; 
    } 
    //Execute all fields have an input 
    if (!string.IsNullOrEmpty(textbox2.Text) && !string.IsNullOrWhiteSpace(textbox1.Text) && 
     !string.IsNullOrWhiteSpace(textbox3.Text)) 
    { 
     return "Please only enter one Criteria"; 
    } 
    //Execute statments if multiple textboxes have values 
    if (!string.IsNullOrWhiteSpace(textbox3.Text) && !string.IsNullOrWhiteSpace(textbox1.Text)) 
    { 
     return "Please only enter one Criteria"; 
    } 

    if (!string.IsNullOrWhiteSpace(textbox3.Text) && !string.IsNullOrWhiteSpace(textbox2.Text)) 
    { 
     return "Please only enter one Criteria"; 
    } 
    if (!string.IsNullOrWhiteSpace(textbox1.Text) && !string.IsNullOrWhiteSpace(textbox2.Text)) 
    { 
     return "Please only enter one Criteria"; 
    } 
    if (!string.IsNullOrWhiteSpace(textbox1.Text) && string.IsNullOrEmpty(textbox2.Text) && 
     string.IsNullOrEmpty(textbox3.Text)) 
    { 
     return "Something else"; 
    } 
    if (!string.IsNullOrWhiteSpace(textbox2.Text) && string.IsNullOrEmpty(textbox1.Text) && 
     string.IsNullOrEmpty(textbox3.Text)) 
    { 
     return "Something there"; 
    } 
    if (!string.IsNullOrWhiteSpace(textbox3.Text) && string.IsNullOrEmpty(textbox1.Text) && 
     string.IsNullOrEmpty(textbox2.Text)) 
    { 
     return "Something here"; 
    } 
    return ""; 
} 

Есть ли другой способ проверить эти текстовые поля? Я бы предпочел более короткую версию этого.

+2

пожалуйста пересмотреть этот вопрос, чтобы сделать этот вопрос ясно и удалить некоторые из постороннего кода. упростите его до наименьшего количества, необходимого для воспроизведения проблемы. – UpAndAdam

ответ

0

Как насчет:

var state1 = string.IsNullOrWhiteSpace(textbox1.Text); 
var state2 = string.IsNullOrWhiteSpace(textbox2.Text); 
var state3 = string.IsNullOrWhiteSpace(textbox3.Text); 

if (!(state1 || state2 || state3)) 
{ 
    return "Please Enter a Search Parameter"; 
} 
if (!(state1^state2^state3)) 
{ 
    return "Please only enter one Criteria"; 
} 
if (state1) 
{ 
    return "Something else"; 
} 
if (state2) 
{ 
    return "Something there"; 
} 
return "Something here"; 
+0

Я думаю, вы пропустили случай, когда все состояния верны. Благодарим вас за предложение XOR. –

Смежные вопросы