2013-11-12 3 views
0

У меня проблема при проверке, является ли текстовое поле пустым. Я прочитал много вопросов и ответов здесь, и я использовал коды, упомянутые, но не повезло.Пустой textBox (null; string.IsNullOrEmpty) Проблема в TextChanged

Я просто хочу проверить, пусто ли текстовое поле, а если оно тогда что-то делает, а если нет, сделайте что-нибудь еще.

До сих пор я попытался следующие коды:

(textBox4 != null && !string.IsNullOrEmpty(textBox4.Text)) 
(textBox4.Text == "") 
(!String.IsNullOrEmpty(textBox4.text) 
(textBox4.Text != Stirng.Empty) 
(textBox4.Text.Trim() == "") 
(textbox4.Text.Length == 0) 

Ни один из кодов не показывают каких-либо ошибок, но они до сих пор не работают. Вот мой полный код для того, что я пытаюсь сделать:

 private void textBox4_TextChanged(object sender, TextChangedEventArgs e) 
    { 
    try 
     { 
      double a = Convert.ToDouble(textBox10.Text);     
      double c = Convert.ToDouble(textBox2.Text); 
      double d = Convert.ToDouble(textBox3.Text); 
      double ee = Convert.ToDouble((0.13 * d) * 2); 

      if (string.IsNullOrEmpty(textBox4.Text)) 
      { 
       textBox15.Text = Math.Round((((((ee/2)/c) * 0.13) + (d * 0.13)), 4).ToString(); 
      } 
      else 
      { 
       textBox15.Text = (((((a/2)/c) * 0.13) + (d * 0.13))/b).ToString(); 
      } 
     } 
     catch 
     { 
     } 
    } 

(TextBox 3,10,15 являются IsReadOnly = «True», а клавиатура InputScope = «Число», если это имеет значение)

Что я делаю неправильно? Я чувствую, что я тестировал каждый код, и я не понимаю, почему он не проверяет, пуст ли textBox4.

EDIT: Когда я пишу что-то в textBox4, код работает, и когда я удалить запись из textBox4 обнаруживает, что textBox4 пуст (но это уже поздно)

EDIT 2: Этот же код If/Else для textBox15 записывается в событиях TextChanged для всех других используемых текстовых полей (1,2,3,4,10,15).

Когда я поставил точку останова на If Else и заявления, он получает только тогда, когда выполняется:

  • Код работает на заявление, если только тогда, когда я что-то типа в textBox4, а затем удалить его.

  • Он работает только с инструкцией Else, только когда я печатаю что-то, а затем удаляю его, а затем снова набираю его.

+0

Похоже, работа для отладчика Что такое значение textBox4.Text, когда эти. условия не работают? –

+0

Вы создаете 'textBox4' динамически, если нет, то вам не нужно' textBox4! = null'. – unlimit

+0

textBox4 остается пустым, пока пользователь не заполнит что-то. Это калькулятор, поэтому все заполняется цифрами. Когда textBox4 является emtpy, ему нужно выполнить первый оператор If, но w Если пользователь вводит что-то в textBox4, ему нужно выполнить второй оператор Else. –

ответ

1

OK, я решил свою проблему, используя string.IsNullOrWhiteSpace Метод.

«Я просто хочу проверить, является ли текстовое поле пустым, а если оно тогда что-то делает, а если нет, сделайте что-нибудь еще."

Вот как код работал:

private void textBox4_TextChanged(object sender, TextChangedEventArgs e) 

try 
     { 
      if (string.IsNullOrWhiteSpace(textBox4.Text)) 
      { 
       //do something 
      } 
     } 

     catch 
     { 
     } 

Спасибо всем за помощь мне :)

1

ли вы попробовать !string.IsNullOrEmpty(textBox4.Text.Trim())?

Это должно помочь вам удалить все пробелы, которые могли бы быть еще сохраняющиеся в текстовом поле.

+0

Да, я пробовал. Это все еще не работает. –

0

Если вы перейдете в обработчик событий, то Textbox4 не может быть пустым. Поэтому я бы предложил использовать

"if (!string.isNullOrEmpty(TextBox4.Text))" 

Как уже упоминалось, просто используйте отладчик. Обычно работает в Winforms с использованием F5.

Если вы абсолютно уверены, что в этом текстовом поле ничего не может быть, и условие все еще не работает, проверьте свой конструктор-файл, если текстовому полем TextBox4 присвоено текстовое поле4_TextChanged REALLY.

Но я повторяю: Просто использовать отладчик, чтобы посмотреть, что там происходит пошагового код с F10

1

«это как-то не обнаруживает, что textBox4 пуста, и ничего не происходит, когда я заполнить textBox4. с некоторым значением код работает."

Так я правильно в понимании того, что вы ожидаете, чтобы запустить этот код и для„метод textBox4_TextChanged“будет называться? Потому что выглядит как обработчик события, который будет вызываться только тогда, когда textBox4 изменяет

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

что произойдет, если вы заполняете что-то в textBox4, а затем удалить его, чтобы он изменения опустошить? осмелюсь сделайте ставку, что ваш код работает тогда.

Так что вы хотите инициализировать ваше значение textBox15 правильно :)

Просто назначить правильное значение (для того, когда textBox4 пуста) для textBox15, когда ваша программа запускается :) Это может быть в конструкторе формы, или когда вы создаете textBox15, я не знаю, как вы создали остальную часть своего проекта.

Дополнительный совет: с помощью отладчика и установив точку останова на своем, если заявлении, вы бы заметили, что ваш код никогда не получать казнен до вы на самом деле изменений значения textBox4. (Хотя название метода должен также был намек;))

+0

Да, вы правы. Когда я ввожу значение, а затем удаляю его, код работает. :) Извините, я noob, и я пытаюсь объяснить все как можно больше. –

+0

Я не инициализировал textBox15. Не могли бы вы мне помочь? Как мне это сделать? –

+0

@Oerkelens Не думаете ли вы, что просто обратится к методу IsNullOrEmpty? –

0

Я не понимаю, почему ваш (textBox4 != null && !string.IsNullOrEmpty(textBox4.Text)) не работает, однако, при использовании IsNullOrEmpty вам не нужно, чтобы проверить нуль, как вы там делали. Постарайтесь поместить свое значение в строку, а затем проверьте на нуль или пусто.

Update: После прочтения вашего комментария я думаю, вы должны изменить свое, если условие, Когда пользователь вводит что-то, что вам нужно выполнить еще условие, поэтому, когда вы вводите что-то в textbox4 то на textBox4_TextChanged событие textbox4 не пусто , Поэтому вам просто нужно проверить свою бизнес-логику или изменить свое состояние.

string strtxt4 = Convert.toString(textBox4.text); 

if (string.IsNullOrEmpty(strtxt4)) 
     { 
      textBox15.Text = Math.Round(((((((ee/b) + c) * b) * 0.0025) + (d * 0.0025))/b), 4).ToString(); 
     } 
     else 
     { 
      textBox15.Text = ((((((a/b) + c) * b) * 0.0025) + (d * 0.0025))/b).ToString(); 
     } 
1

Если начать обрабатывать TextChanged события, значит ваш textBox4 не опустошить больше, потому что вы ввели что-то в textBox4. Несмотря на то, что все введенные вами были пустыми, он все равно вызовет метод textBox4_TextChanged.

Поэтому я думаю, что вы не должны указывать контрольную строку textBox4 в методе textBox4_TextChanged.

+0

Я пробовал это. Не работает –

+0

Должен ли я использовать другой метод? Где я должен поставить контрольную строку для 'textBox4'? –

+0

Вы должны поместить проверку с кодом if-else в другой обработчик событий TextChanged текстовых полей, которые не прочитаны только, например textBox1 и textBox2. Но для textBox4_TextChanged вам не нужно обладать **, если **, просто поместите вычисление в ** каждую ** область. – Alice

0

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

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

  • Нет связанных вопросов^_^