Всем привет, в процессе изучения C#, возник вопрос, по поводу очистки textBox с WinForms. На просторах встречаются, разные способы:
textBox.Text = null;
textBox.Clear();
textBox.Text = "";
Какой правильнее использовать? Может есть какие-то особенности? Спасибо.
Мое мнение -- плевать как ты будешь очищать) Любым из этих способов.
но раз уж есть функция textBox.Clear();
то я бы пользовался бы ею. Как минимум -- потому что короче запись и читабельнее код.
Если проследить цепочку вызовов свойства 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, поэтому придётся их освоить.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Суть задачи: для каждой записи (строки) таблицы необходимо добавить кнопку SUBMIT () "Редактировать запись", которая методом POST открывает новую...
добавить например условие, если например чтобы искал еще и в подкатегориях выбранной категории? то есть например есть такая структуру
Имеются следующие файлы: configphp (подключение к базе данных); data
Я хочу сделать защищённый пароль с md5Я сделал шифрование на нём: md5($password)