2012-04-15 2 views
-1

Я делаю проверку формы в VB, я проверяю данные текстового поля с помощью функции txtName_LostFocus, а на неправильном входе я использовал txtName.Focus(). Это хорошо работает для меня. Но проблема в том, что, поскольку пользователь не вводит правильный текст, моя кнопка EXIT также не работает. Есть ли решение исправить это решение.Вопрос проверки формы VB

+0

Вы можете указать код, что вы делаете в точности. – coder

ответ

2

Проблемы, с которыми вы столкнулись, являются результатом плохого чтения документации. Документы для LostFocus event сделать очень ясно, что вы должны не попытки установить фокус (например, путем вызова Focus method) в методе обработчика для этого события:

Внимание

Не попытайтесь установить фокус с помощью обработчиков событий Enter, GotFocus, Leave, LostFocus, Validating или Validated. Это может привести к тому, что ваше приложение или операционная система перестанут отвечать на запросы. Для получения дополнительной информации см. Раздел WM_KILLFOCUS в разделе «Справочная информация по клавиатуре» и раздел «Тревоги сообщений» раздела «О сообщениях и очередях сообщений» в библиотеке MSDN по адресу http://msdn.microsoft.com/library.

Лучшим решением является обработка Validating event. Вы проверите свой ввод, проверяя внутри метода обработчика событий Validating, который автоматически создается .NET Framework.

Если вход действителен, вы ничего не делаете. Если вход не действителен, вы устанавливаете свойство Cancel параметра CancelEventArgs в true, в результате чего все последующие события должны быть подавлены.

Private Sub myTextBox_Validating(ByVal sender As Object, _ 
           ByVal e As ComponentModel.CancelEventArgs) _ 
          Handles myTextBox.Validating 
    If Not Valid(myTextBox.Text) Then 
     ' Validation failed, so cancel the event and pre-select the text. 
     e.Cancel = True 
     myTextBox.Select(0, myTextBox.Text.Length) 

     ' Optionally (but recommended): Set an ErrorProvider control. 
     ' errorProvider.SetError(myTextBox, "Invalid input") 
    End If 
End Sub 
+0

Он работает нормально, но пользователь не может выйти до действительной информации. Я хочу, чтобы этот пользователь мог выйти/выйти из формы, может ли он ввести неверный текст –

+0

@Shah Это тоже касается связанной документации. Задайте свойство 'CausesValidation' вашей кнопки« Выход »(и любые другие элементы управления) для« истины », чтобы при нажатии на нее не возникали события« Validating »или« Validated ». –

Смежные вопросы