В контексте элемента управления Winforms TextBox, вам вообще не нужно проверять свойство .Text
для null
. К сожалению, я не могу найти документацию по этому вопросу, иБоюсь, что это был случайный перенос mdsn => docs, но я проверил это в Visual Studio.
Вы также можете это проверить;попытайся.Создайте простой проект с текстовым полем и установите его Text
в null
в коде.Затем проверьте отладчик, и вы увидите, что он на самом деле установил пустую строку.Элемент управления TextBox в этом смысле хорош, как и большинство других стандартных элементов управления Winforms.
С учетом этого противоположность этого кода:
while (string.IsNullOrEmpty(TextBox.Text))
может привести к следующему:
while (TextBox.Text != "")
хотя вы, возможно, захотите также рассмотреть пробельные символы, которые будут одной из следующих двух строк:
while (TextBox.Text.Trim() != "")
while (!string.IsNullOrWhitespace(TextBox.Text))
Но теперь мне нужно затронуть еще один момент: ни один из этих вариантовделает Invoke
для элемента управления, это означает, что он должен выполняться в потоке пользовательского интерфейса. Очень плохо запускать такой цикл while()
в потоке пользовательского интерфейса. Вы рассчитываете на то, что пользователь прервет цикл, но в то же время вы заблокировали весь пользовательский интерфейс., где программе будет трудно даже обработать ввод, который в конечном итоге разблокирует его.
Вместо этого вам нужно обработать событие нажатия клавиши или проверить текстовое поле в точке, где пользователь пытаетсяинициировать действие в зависимости от значения текстового поля или переместить его в другой поток.