Как сделать пустое текстовое поле в vb

Обновлено: 02.07.2024

У меня много текстовых полей в одной форме (около 20). Есть ли в любом случае, чтобы проверить их все сразу, чтобы увидеть, если они пусты, а не писать массивную строку кода, чтобы проверить каждый из них по отдельности, такие как

Это просто кажется длинным путем вокруг него?

вы также можете использовать LINQ:

Я бы рекомендовал использовать событие проверки элементов управления TextBox с контролем поставщика ошибок (просто добавьте его в форму):

тогда вы можете просто позвонить:

хорошая вещь об этом является то, что пользователь информируется о том, что поле отсутствует и требуется. Это работает с другими элементами управления, кроме текстовых полей, поэтому вы можете предоставить более полное решение. Кроме того, если вы перейдете к более поздней точке, где один или два текстовых поля не должны иметь значения, вы просто не проверить их вместо того, чтобы добавлять специальные случаи в циклах.

наконец, если вы не хотите печатать все элементы управления, то вы можете сделать это в форме load:

A очень упрощенно подход будет собрать все TextBox элементов управления в последовательности с помощью перечисли.Метод oftype метод LINQ, а затем повторите его в Для Каждого петли:

Sub для проверки пустого текстового поля в GroupBox, вы можете использовать это:

Я нашел это, возможно, вы можете изменить его, чтобы проверить, все ли текстовые поля ясны, а не то, что он в настоящее время делает, что просто очистить все текстовые поля


Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.

в VB проекте создана форма с текстбоксом. Можно ли как-то сделать так, что бы при открытии этой формы в текстбоксе был какой-то текст серого цвета, например "введите данные", а когда текстбокс активируешь (ставишь на него курсор) серый текст пропадает, а буквы, уже вводимые заново, вводятся чурным обычным цветом? Я такое видел на html страничках, не знаю, возможно ли здесь такое. Зарание спасибо за ответ! Антон

Выставь в свойствах ТексБокса Text "свой текст",а в ForeColor выбери нужный тебе цвет.
Затем в обработчик TextBox1_MouseDown такой код
TextBox1.Text = ""
TextBox1.ForeColor = Black

Это выглядит так

Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
TextBox1.Text = ""
TextBox1.ForeColor = Black
End Sub

У меня есть 10 кнопок, и я хочу нажать на кнопку, чтобы она изменила текст выделенного текстового поля и переключилась на следующее текстовое поле. я попробовал это:

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

2 ответа

Этот код не делает того, что вы думаете:

Чтобы узнать, какой элемент управления имеет фокус, сделайте это:

В своем обработчике Click вы по очереди вызываете метод Focus каждого TextBox , а затем заполняете их, если это удается. Это будет успешным каждый раз, поэтому вы заполняете каждый TextBox .

Я подозреваю, что вы хотели протестировать свойство Focused , а не вызывать метод Focus . Это имело бы больше смысла, потому что тогда оно будет заполнять только те TextBox , которые были в фокусе. Это все еще ошибочно, потому что Button , который вы только что нажали, будет иметь фокус, поэтому вы не будете заполнять TextBox .

У вас есть два основных варианта здесь. Во-первых, вы можете использовать пользовательский элемент управления Button , который не будет фокусироваться при нажатии. Таким образом, TextBox , который имел фокус при нажатии, все равно будет иметь фокус. В качестве альтернативы, вы можете вспомнить, какой элемент управления был последним, назначив его полю и используя его. Это, вероятно, путь, которым я бы пошел.

Репутация: нет
Всего: нет

Всем доброго времени суток!

Имеется на форме TextBox, связанный с BindingSource. Если взамен текущего значения ввести пустую строку, т.е. удалить весь текст, TextBox не отдаёт фокус. Тип поля, с которым связан этот TextBox, числовой, поле не обязательное, база данных access. Собстенно, почему так происходит и как мне можно ввести в поле пустое значение?

Репутация: 3
Всего: 24

надо узнать у астрологов неделю кого они объявили что столько народу поперло.

Ana1oliy, может как то более конкретизируем проблему? а я кому то подарил свой шаманский бубен в связи с чем у меня пропал дар ясновидения. не осмеливаюсь спросить почему вопрос про текстбокс задается в ветки про базы данных, я думаю вразумительного ответа не дождусь. что значит текстбокс не отдает фокус? кто писал приложение? может быть в обработчике события текстбокса установлено что он не может быть пустым и на него постоянно возвращается фокус.

Репутация: 1
Всего: 59

Репутация: нет
Всего: 54

Цитата(Экскалупатор @ 15.5.2011, 19:42 )
а я кому то подарил свой шаманский бубен в связи с чем у меня пропал дар ясновидения

Бубен у меня, но я тоже ничего не понял.

Ana1oliy, проблема возможно в том, что в БД должно поступать NULL, а не '' (пустая строка).

Репутация: нет
Всего: 18

Попробуйте событие Binding.Parse

Код

Binding binding = new Binding("Text", BindingSource, "NUMFIELD");
binding.Parse += ParseEventHandler;
TextBox.DataBindings.Add(binding);

Репутация: нет
Всего: нет

Цитата

Почему вопрос про текстбокс задается в ветки про базы данных


Это значит что при щелчке мыши на каком либо другом компоненте (текстбоксе, кнопке или чём-то ещё) фокус ввода остается на данном текстбоксе и компоненты никак не реагируют на действия пользователя, не реагируют даже кнопки управления окном.

Цитата

может как то более конкретизируем проблему?

Попробуем. Итак, кинул на форму текстбокс. Создал соединение с БД, всё как положено. связал свойство "текст" текстбокса через DataBindings с полем некоторой таблицы. Тип поля - число, поле не обязательное, т.е. может принимать null. Запускаю на выполнение и если сотру текст, записанное туда число, или что-то запишу, а потом сотру, случается указанная выше проблема. Если же связать его с полем БД, которое имеет текстовый тип, то таких проблем не наблюдается. Никаких обработчиков событий не установлено. Голый текстбокс с параметрами по умолчанию.

Gluttton
Да, должно, но ведь при связи текстбокса с БД, текст, если это возможно сам преобразуется к нужному типу. Если поле числовое, то в число нужного типа, если дата, то в дату. И вместо пустой строки, думаю, в БД тоже должно уходить null. Да и обычно если DataSet не устраивает, то что ему пихают, он ругается, а тут молчит. Еще я пробовал обрабатывать событие textChanged и если имеем пустую строку записывать в нужное поле таблицы датасета DBNull.Value, но не помогло, да и большие сомнения в правильности подхода. Попробую то, что предложил Voyager

Voyager
Большое спасибо, буду пробовать.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

[ Время генерации скрипта: 0.1240 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Читайте также: