Изрядное количество просмотров страниц на мой вопрос, но ответов нет. К счастью, я нашел свой ответ. Спасибо http://www.thecodemonk.com/2008/02/18/tableadapter-connection-strings за это простое решение.
Даже не пытайтесь сохранить в приложении настройку «AppNameConnectionString». Вместо этого просто сохраните желаемую строку подключения в качестве пользовательской настройки, то есть «ActiveConnectionString» типа string. Я заменил весь блок кода, который я цитировал в своем первоначальном вопросе, на
My.Settings.ActiveConnectionString = strConn ' previously built conn string
My.Settings.Save()
Что позволяет этому пользовательскому параметру стать активной строкой соединения, так это события, связанные с .Net, управляющим настройками. В настройках проекта есть кнопка «Просмотр кода» для доступа к обработчикам событий настроек. В событии SettingsLoaded просто задайте для параметра строки подключения приложения значение параметра пользовательской строки подключения:
Private Sub MySettings_SettingsLoaded(sender As Object, e As System.Configuration.SettingsLoadedEventArgs) Handles Me.SettingsLoaded
Me.Item("MyAppNameConnectionString") = Me.Item("ActiveConnectionString")
End Sub
Это все, что нужно для того, чтобы ваши пользовательские настройки стали рабочей строкой соединения при загрузке приложения.
Добавьте еще один обработчик событий в коде настроек, и при сохранении новой строки подключения из приложения она будет мгновенно активирована!
Private Sub MySettings_PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Handles Me.PropertyChanged
If e.PropertyName = "ActiveConnectionString" Then
Me.Item("MyAppNameConnectionString") = Me.Item("ActiveConnectionString")
End If
End Sub
Еще раз спасибо TheCodeMonk за то, что поделились этим потрясающе простым, но, по-видимому, очень неуловимым решением!