Отключить кнопку на основе трех полей текстового поля - PullRequest
1 голос
/ 13 декабря 2010

Я довольно новичок в VB.net (и VS 2008), поэтому я боюсь, что мой вопрос может быть основным, но я не уверен, как его решить.с тремя полями текстового поля и кнопкой.Все поля текстового поля должны быть заполнены, прежде чем пользователь сможет нажать кнопку, чтобы продолжить.С этой целью я хотел бы отключить кнопку, если есть хотя бы одно пустое текстовое поле.

Если бы у меня было только одно поле текстового поля, мне было бы легко это сделать.В событии Textbox1_Leave я бы проверил, не является ли Textbox1.Text не пустым, и если да, установите Button1.Enabled = True.
Но что мне делать, если у меня три текстовых поля?Есть три обработчика событий, по одному для каждого текстового поля?Или есть способ, с которым я не знаком?

Большое спасибо.

Ответы [ 5 ]

1 голос
/ 13 декабря 2010
AddHandler Textbox1.TextChanged, AddressOf ValidateInputs
AddHandler Textbox2.TextChanged, AddressOf ValidateInputs
AddHandler Textbox3.TextChanged, AddressOf ValidateInputs

Private Sub ValidateInputs(ByVal Sender As Object, ByVal e as EventArgs)
    Button1.Enabled = Not (Textbox1.Text = String.Empty OrElse Textbox2.Text = String.Empty OrElse Textbox3.Text = String.Empty)
End Sub

И, что еще лучше, если все эти элементы управления имеют одного и того же родителя и являются единственными текстовыми полями в родительском элементе (скажем, все они вложены в групповой ящик), вы можете сделать это примерно так:

For Each t As TextBox In GroupBox1.Controls.OfType(Of Textbox)
   AddHandler t.TextChanged, AddressOf ValidateInputs
Next t

Private Sub ValidateInputs(ByVal Sender As Object, ByVal e as EventArgs)
    Button1.Enabled = Not GropuBox1.Controls.OfType(Of Textbox).Any(Function(t) t.Text = String.Empty)
End Sub
0 голосов
/ 07 июля 2016
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Or TextBox5.Text = "" Then
            Button1.Enabled = False
        End If
    End Sub
    Private Sub TextBox5_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox5.TextChanged
        If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Or TextBox5.Text = "" Then
            Button1.Enabled = False
        Else
            Button1.Enabled = True
        End If
    End Sub
0 голосов
/ 13 декабря 2010

Создайте метод, который может проверять состояние всех трех текстовых полей и активировать button1, если все три имеют текст.

Создать обработчик событий для всех трех текстовых полей, который вызывает этот метод.

Редактировать: В качестве примечания вы можете использовать событие «Текст изменен», а не «Оставить», потому что фокус на третьем текстовом поле может быть не потерян, если следующее, что они сделают после ввода, - нажмите кнопку.

0 голосов
/ 13 декабря 2010

Обработка изменяющихся элементов управления Проверка события , а затем корректировка поведения кнопки «включено / выключено» в соответствии с успешной проверкой элементов управления.

MSDN объяснение ...

0 голосов
/ 13 декабря 2010

Имеет универсальный саб, который проверяет три текстовых поля, которые вызываются при каждом оставлении любого из них.

Эффективно было бы

sub CheckBoxes
If (textbox1.text <> "") AND (textbox2.text <> "") AND (textbox3.text <> "") Then
    Button1.Enabled = True
else
    Button1.Enabled = False
End If
end sub

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

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