Solved

Bind textbox to custom property in My.Settings

Posted on 2016-10-24
2
64 Views
Last Modified: 2016-10-26
I need to store a complete set of database connection information in a utility app's settings file. Storing a password in clear text is not acceptable, but the user should not have to worry about that. I have the server, database and user name settings all bound to text controls as usual. When it comes to bind to the clear text password setting, it does not show up in the list (illustrated below).

Visual Studio Property Binding Dialog
Here's my customized settings class. The three code attributes are copied directly from the Settings.Designer.vb file generated for the other simple text settings. I would think this property would show up, but it does not. I re-compiled, closed Visual Studio, re-opened -- nothing.

Namespace My
  Partial Friend NotInheritable Class MySettings
    <Global.System.Configuration.UserScopedSettingAttribute(), _
     Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
     Global.System.Configuration.DefaultSettingValueAttribute("")> _
    Public Property Password As String
      Get
        Return Utility.Security.Decrypt(My.Settings.PasswordEncrypted)
      End Get
      Set(value As String)
        My.Settings.PasswordEncrypted = Utility.Security.Encrypt(value)
      End Set
    End Property
  End Class
End Namespace

Open in new window


If there is a better way to handle this I'm open, but the above is how it ought to work.
0
Comment
Question by:CraigYellick
2 Comments
 
LVL 28

Accepted Solution

by:
Ark earned 500 total points
ID: 41859636
There are 3 options:
1. Bind control property at run-time:
PasswordTextBox.DataBindings.Add("Text", My.Settings, "Password")

Open in new window

2. Decript password on loading settings and encript on saving:
Namespace My
  Partial Friend NotInheritable Class MySettings
      Private Sub MySettings_SettingsLoaded(ByVal sender As Object, ByVal e As System.Configuration.SettingsLoadedEventArgs) Handles Me.SettingsLoaded
        My.Settings.PasswordEncrypted = Utility.Security.Decrypt(My.Settings.PasswordEncrypted)
      End Sub
      Private Sub MySettings_SettingsSaving(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles Me.SettingsSaving
        My.Settings.PasswordEncrypted = Utility.Security.Encrypt(My.Settings.PasswordEncrypted)
      End Sub
  End Class
End Namespace

Open in new window

3. Add Password setting via settings tab in IDE and change code for this property directly in Settings.Designer.vb
0
 
LVL 11

Author Comment

by:CraigYellick
ID: 41860747
While it'd be nice to get the setting to bind like the others, it's not worth spending a lot of time on it. Option #2 seems safe enough but I did add a line to clear out the clear-text password when saving.

Namespace My
  Partial Friend NotInheritable Class MySettings
    Private Sub MySettings_SettingsLoaded(sender As Object, e As System.Configuration.SettingsLoadedEventArgs) Handles Me.SettingsLoaded
      My.Settings.Password = Utility.Security.Decrypt(My.Settings.PasswordEncrypted)
    End Sub
    Private Sub MySettings_SettingsSaving(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles Me.SettingsSaving
      My.Settings.PasswordEncrypted = Utility.Security.Encrypt(My.Settings.Password)
      My.Settings.Password = "" ' Do not store cleartext password
    End Sub
  End Class
End Namespace

Open in new window

0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
HTML - Color not displaying correctly in EMAIL. 6 49
write xml in vb.net 2 33
VB.Net WebRequest Code from JSON curl 7 53
vb.net winforms sizing/resolution? 4 45
1.0 - Introduction Converting Visual Basic 6.0 (VB6) to Visual Basic 2008+ (VB.NET). If ever there was a subject full of murkiness and bad decisions, it is this one!   The first problem seems to be that people considering this task of converting…
The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.

821 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question