Как правильно очистить textBox

185
20 октября 2019, 06:40

Всем привет, в процессе изучения C#, возник вопрос, по поводу очистки textBox с WinForms. На просторах встречаются, разные способы:

textBox.Text = null;
textBox.Clear();
textBox.Text = "";

Какой правильнее использовать? Может есть какие-то особенности? Спасибо.

Answer 1

Мое мнение -- плевать как ты будешь очищать) Любым из этих способов.

но раз уж есть функция textBox.Clear(); то я бы пользовался бы ею. Как минимум -- потому что короче запись и читабельнее код.

Answer 2

Если проследить цепочку вызовов свойства Text 1, 2, 3, то мы увидим следующий код:

if (value == null) {
    value = "";
}

То есть null задать этому свойству невозможно, всё равно будет присвоена пустая строка. Следовательно, способ textBox.Text = null; отпадает.

Проследив цепочку вызовов метода Clear 4, 5, видим:

public void Clear() {
    Text = null;
}

Внезапно, присвоение null. Мда, почему бы сразу не присваивать ""?..

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

В современных приложениях обычно используется привязка данных. Напрямую мы не работаем с графическими контролами. Значения в них меняются опосредованно.

Пример получается громоздкий, но раз уж взялся объяснять, то доведу дело до конца.

Допустим, у нас имеется класс, описывающий человека, у которого есть имя (другие свойства добавьте сами). Чтобы экземпляры этого класса могли участвовать в двусторонней привязке данных, нужно реализовать у него интерфейс INotifyPropertyChanged.

class Person : INotifyPropertyChanged
{
    private string _name;
    public string Name
    {
        get => _name;
        set
        {
            if (_name != value)
            {
                _name = value;
                NotifyPropertyChanged();
            }
        }
    }
    private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
    public event PropertyChangedEventHandler PropertyChanged;
}

Создадим экземпляр этого класса и прибиндим его к имеющемуся текстбоксу:

var person = new Person { Name = "Bob" };
textBox.DataBindings.Add(
    nameof(TextBox.Text), person, nameof(Person.Name), false, DataSourceUpdateMode.OnPropertyChanged);

Теперь для очистки текстбокса достаточно очистить привязанное свойство:

person.Name = "";

Если вы будете создавать большие серьёзные приложения, то неизбежно столкнётесь с data binding и INotifyPropertyChanged, поэтому придётся их освоить.

READ ALSO
PHP реадктирование строки таблицы

PHP реадктирование строки таблицы

Суть задачи: для каждой записи (строки) таблицы необходимо добавить кнопку SUBMIT () "Редактировать запись", которая методом POST открывает новую...

143
Mysql учитывать дочек

Mysql учитывать дочек

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

105
Вывод конкретной новости из базы данных на страницу view.php

Вывод конкретной новости из базы данных на страницу view.php

Имеются следующие файлы: configphp (подключение к базе данных); data

126
Как работать с md5

Как работать с md5

Я хочу сделать защищённый пароль с md5Я сделал шифрование на нём: md5($password)

106