2012-06-07 3 views
1

У меня есть форма проверки того, что несколько текстовых полей не являются нулевыми. Если любой из них, он должен показать окно сообщения, сбросить текстовые поля и позволить пользователю повторить попытку. Я считаю, что я неправильно проверяю текстовое поле. Как я могу это сделать? Благодарю.Сохранение значений текста в текстовом поле - Сброс?

public void ShowPaths() 
    { 
     if (textBox1.Text == null | textBox2.Text == null) 
     { 
      MessageBox.Show("Please enter a Project Name and Number"); 
     } 
     else 
     { 
      sm.projNumber = textBox1.Text; 
      sm.projName = textBox2.Text; 

      textBox3.Text = sm.Root("s"); 
      textBox4.Text = sm.Root("t"); 
     } 
     textBox1.ResetText(); 
     textBox2.ResetText();   
    } 

ответ

3

Эта линия является неправильным по двум причинам

if (textBox1.Text == null | textBox2.Text == null) 
  1. TextBox.Text никогда не бывает пустой, когда вы читаете это , это пустая строка
  2. вы с помощью побитового оператора |, когда вы должны использовать логический ||

поэтому правильная линия

if (textBox1.Text == string.Empty || textBox2.Text == string.Empty) 
{ 
    MessageBox(......); 

    // See the comment below 
    textBox1.ResetText();  
    textBox2.ResetText(); 
} 

С вашего вопроса неясно, хотите ли вы сбросить текстовое поле в случае ошибки или если вы хотите сбросить все так же, как сейчас. Если вы хотите сбросить только в случае ошибки, переместите два ResetText внутри блока if

+0

Здравствуйте. Я пробовал ResetText(), но для меня это не работает. Я использую VB2010 express. У него есть метод resettext, но он ничего не делает – EmPlusPlus

0

WinForms Texboxes никогда не показывают null в моем опыте, вместо возвращения String.Empty.

Вы можете использовать String.IsNullOrEmpty(textBox1.Text) для проверки любого случая. Если вы используете .Net 4, вы можете использовать String.IsNullOrWhiteSpace(textBox1.Text), который также вернет true для пробелов.

if (String.IsNullOrWhiteSpace(textBox1.Text) || String.IsNullOrWhiteSpace(textBox2.Text)) 
0

Использование

if (textBox1.Text == null || textBox2.Text == null) 

вместо

if (textBox1.Text == null | textBox2.Text == null) 

Вы не используете OR (||) оператора правильно.

Используйте String.IsNullorEmpty(string) для проверки значений NULL и пустых значений в строковой переменной.

0
if ((textBox1.Text == String.Empty) || (textBox2.Text == String.Empty)) 

если Textbox1 пуст или TextBox2 пуст (обратите внимание, что || а |) Также свойство Text никогда не бывает пустым. Это всегда является строкой, но это может быть пустым (String.Empty или «»)

0

Свойство .Text TextBox никогда не будет равно NULL. Что вы ищете является пустой строкой, так:

if (textBox1.Text.Equals(string.Empty) || textBox2.Text.Equals(string.Empty)) 

или

if (textBox1.Text == "" || textBox2.Text == "") 

или

if (String.IsNullOrEmpty(textBox1.Text) || String.IsNullOrEmpty(textBox2.Text)) 

Оператор | должен быть ||, а также. Но это только часть проблемы.

0

Хотя я не conviced текстовое поле может иметь нулевое значение, я использую String.IsNullOrEmpty

if(String.IsNullOrEmpty(textBox1.Text) || String.IsNullOrEmpty(textBox2.Text)) 
{ 
    //... 
} 
Смежные вопросы