Как заполнить текстовое поле текстом, если он пуст? Я использую VB.NET.
Как заполнить пустой текстовый текст по умолчанию?
Ответ 1
Похоже, вы описываете cue banner, который представляет собой текст подсказки, который отображается в пустом текстовом поле. Начиная с Windows XP эта функциональность поддерживается операционной системой. Эффект, достигнутый таким образом, намного более элегантен, чем сам текст по умолчанию в событии TextChanged
. Это выглядит так:
Настройка этого уровня выполняется на уровне API Windows, отправив элементу управления текстовым полем сообщение EM_SETCUEBANNER
. Чтобы использовать это из проекта .NET, вам придется использовать P/Invoke.
К счастью, большая часть работы уже сделана для вас. Этот примерный проект - это быстрый и безболезненный способ добавить поддержку бильярдного баннера в существующий проект. Вот еще один пример с более полным объяснением процесса.
Если вы не хотите, чтобы ваше приложение зависело от внешней DLL, вы можете добавить необходимый код непосредственно в свой проект. Самый простой способ - подклассифицировать существующий элемент управления TextBox
и добавить код для поддержки бинговых баннеров. См. этот ответ для кода, который вам понадобится. Если у вас возникли проблемы с преобразованием его в VB.NET, попробуйте этот инструмент.
Ответ 2
Возможно, вам захочется обработать событие TextChanged
и установить текст по умолчанию, если текстовое поле пуст при запуске события.
У меня нет примера VB.NET, но следующий С# должен быть слишком сложным для понимания:
public Form1()
{
this.InitializeComponent();
textBox1.Tag = "Default text";
textBox1.Text = (string)textBox1.Tag;
textBox1.TextChanged += new EventHandler(OnTextChanged);
}
void OnTextChanged(object sender, EventArgs e)
{
var textbox = (TextBox)sender;
if (string.IsNullOrEmpty(textbox.Text))
{
textbox.Text = (string)textbox.Tag;
}
}
И обработчик события может быть повторно использован для нескольких текстовых полей.
РЕДАКТИРОВАТЬ: Здесь примерно то же самое в VB.NET
Sub New()
' This call is required by the designer.
InitializeComponent()
TextBox1.Tag = "Default text" ' This can be set with the designer
TextBox1.Text = CStr(TextBox1.Tag)
End Sub
Private Sub OnTextBoxTextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Dim textbox As TextBox = DirectCast(sender, TextBox)
If String.IsNullOrEmpty(textbox.Text) Then
textbox.Text = CStr(textbox.Tag)
textbox.SelectAll()
End If
End Sub
Конечно, вы также можете добиться аналогичного поведения с использованием встроенных функций Windows, но несколько строк управляемого кода предоставят вам практически все, что вам нужно, даже если вы не хотите использовать Win32.
Ответ 3
обработка текста по умолчанию в текстовом поле
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Text = "Default Text" ' initialize the text box
End Sub
удалите текст, когда курсор находится в текстовом поле
Private Sub TextBox1_GotFocus(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1_GotFocus
TextBox1.Text = "" ' clear the text box for typing
End Sub
Если после изменения текста текстовое поле остается пустым, снова появляется текст по умолчанию
Private Sub TextBox1_LostFocus(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1_LostFocus
TextBox1.Text = "" ' clear the text box for typing
End Sub
Ответ 4
Вы ищете что-то вроде этого?
If Textbox.Text = string.Empty Then
TextBox.Text = "Default Text"
End If
Ответ 5
Я бы создал класс, который наследует TextBox и делает с ним две вещи:
- Добавить свойство строки DefaultText
- Переопределите установщик текста, чтобы всегда устанавливать этот DefaultText, если новое текстовое значение - String.Empty
Ответ 6
Я предполагаю, что вы хотели добавить текст с страницы aspx.
<asp:TextBox ID="TextBox1" runat="server" value="Default Value"></asp:TextBox
Даже когда .NET не предлагает эту функцию в intellitext, я предполагаю, что она позволит вам добавить любой атрибут, даже обычай, который вы можете манипулировать данными в нем. Но это делает работу. и атрибут value отправляется в браузер, поэтому инициируется в текстовом поле.
Для TextArea (TextMode = "MultiLine" ) вы можете поместить между тегами.
<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine">Text Here will be inside the TextArea</asp:TextBox>
Это похоже на тэг html textarea.