Application Settings and PropertyGrid
Hello guys,
It has been a great discovery that you can make your application fully customizable for the user just adding a PropertyGrid to a form and setting its SelectedObject property as My.Settings object.
VB Code:
PropertyGrid1.SelectedObject = My.Settings
In order to make your application customizable you have to:
- Double Click on MyProject
- Select the 'Settings' tab
- Add all the settings you need by indicating:
- Name for the property
- Type (String, Color, Integer,ConnectionString...)
- Scope (The scope of the property: user/application)
- Value (The default value for this setting)
- Now you can add this properties to any control in your form:
- Click any control to select it
- In the propertygrid of the control go to:
(ApplicationSettings)>(PropertyBinding)
- Now select any property and bind it to one of the settings you created before.
- The last thing you have to do is adding a PropertyGrid to a form in your application and set:
VB Code:
PropertyGrid1.SelectedObject = My.Settings
Thats all. The user can change the values of the settings on the propertygrid and all the controls within the application bound to these settings will show the changes.
This is all quite simple. My question is:
Is it possible to categorize the settings so you can group them in categories in the PropertyGrid? The user can see all the settings in the propertygrid, but can only change the properties which scope is "user". Is it possible to hide any of the properties?
Thanks!!
Re: Application Settings and PropertyGrid
Any ideas? Perhaps adding or modifying some tags in the app.config file?
Re: Application Settings and PropertyGrid
Yes, you have to use attributes and specify the category that the property goes into by shadowing the prop.
Re: Application Settings and PropertyGrid
Sorry, but I have no idea on how to do that. Let's say I have this simple app.config file:
VB Code:
<configuration>
<userSettings>
<MyApplication.My.MySettings>
<setting name="ButtonText" serializeAs="String">
<value>I am a button</value>
</setting>
<setting name="ButtonBackColor" serializeAs="String">
<value>Orange</value>
</setting>
<setting name="ButtonForeColor" serializeAs="String">
<value>Black</value>
</setting>
</MyApplication.My.MySettings>
</userSettings>
</configuration>
How can I group both color properties under a Colors category and Buttontext setting under a "texts" category?