Пожалуйста, позвольте мне объяснить, что у меня есть и чего я пытаюсь достичь.
У меня есть текстовое поле (называемое txtb1) и кнопка под ним (называемая btn_browse) на winform в vb.net.проект.
Когда пользователь нажимает кнопку, появляется диалоговое окно браузера папок.Пользователь выбирает желаемую папку, и когда он / она нажимает «ОК», диалоговое окно закрывается, и путь к выбранной папке появляется в текстовом поле.Я также хочу сохранить это значение в переменной, которая будет использоваться где-то еще (значение будет скопировано в XML-файл, когда пользователь нажмет «применить» на форме, но это не имеет никакого эффекта и не связано с моей проблемой).
Для этого у меня есть следующий код:
Public myVar As String
Private Sub btn_browse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_browse.Click
Dim f As New FolderBrowserDialog
If f.ShowDialog() = DialogResult.OK Then
txtb1.Text = f.SelectedPath
End If
myVar = txtb1.text
f.Dispose()
End Sub
Эта часть работает без проблем.
Теперь, что если пользователь либо: 1- решит ввестипуть, а не использовать кнопку обзора.или 2- после использования кнопки обзора и выбора папки они решают вручную изменить местоположение
Пытаясь решить эту проблему, я добавил текстовое событие в текстовое поле следующим образом:
Private Sub txtb1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtb1.TextChanged
myVar = txtb1.Text
End Sub
Однако это не работает.По-видимому, и я не знаю, насколько это актуально, когда пользователь выбирает нужную папку с помощью кнопки обзора, также запускается событие с измененной текстовой информацией.и когда я нажимаю на текстовое поле (чтобы выделить его) и нажимаю любую клавишу клавиатуры, приложение просто перестает отвечать.
Итак, мои вопросы: правильно ли я поступаю?если моя логика ошибочна, может ли кто-нибудь указать мне, как обычно такая вещь может быть достигнута?Можно ли ограничить инициирующие события только вводом с клавиатуры, чтобы обойти это?Я пробовал события нажатия клавиш и нажатия клавиш, но я получаю остановку.