Давайте сначала сосредоточимся на проблеме, с которой вы сталкиваетесь.Но убедитесь, что вы прочитали Примечание .
Вот проблема → В конструкторе вы установили текст в значение свойства PlaceHolderText
.В это время PlaceHolderText
пусто.
Даже если вы установите жестко заданное значение по умолчанию для свойства Text
в конструкторе, когда вы перетаскиваете экземпляр пользовательского текстового поля на форму, метод InitializeNewComponent
TextBoxDesigner
установитText
свойство к пустой строке.Если вы закроете и снова откроете конструктор, появится ваш текст.
Примечание. Почему не следует отображать текст-заполнитель, задав свойство Text
Это определенно не очень хорошая идея для реализации функции заполнителя путем установки и сброса свойства Text
в событиях GotFocus/LostFocus
или Enter/Leave
, потому что:
- У него будут проблемы при использовании привязки данных,это приведет к ошибкам проверки при привязке к свойству или свойствам числа или даты, которые должны иметь определенный формат.
- При привязке данных, если вы нажмете кнопку Сохранить, значения заполнителей будут сохранены в базе данных нежелательно.
- Исходя из вашего кода, если пользователь вводит то же значение, которое вы указали для заполнителя, то при потере фокуса вы сбрасываете его на пустое.Это неправильно.
Чтобы иметь местозаполнитель (также известный как подсказка, водяной знак и cue-banner), вы можете использовать одно из следующих решений: функция собственного текстового поля или нестандартный раствор краски .