[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 4249
  • Last Modified:

Save user settings in .Net Windows application

I am writing a Windows application using C#.Net.  What is the preferred method for storing user settings/preferences without writing to the registry?
0
ktmedlin
Asked:
ktmedlin
1 Solution
 
Anurag AgarwalPython DeveloperCommented:
One way to put them in memory by Creating a singleton class & store the user settings.

Another way (Recommended) is to store this into database tables.

Anurag
0
 
ktmedlinAuthor Commented:
The user's settings must be stored on the hard drive (not in memory) so that the same settings can be used when the user has closed and reopened the app.  Storing settings in a database is not an option.  Need to use a file of some type but don't know what kind.  I assume XML would be the best solution and I have heard of Settings.settings and App.config but I don't know which one to use or how to use them.
0
 
Anurag AgarwalPython DeveloperCommented:
You can use a flat file that is a text file for storing the user specific data. In this flat file you can put settings like this

[UserId=""]
Maximize=1;
Toolbar=0;
---
---

[UserId=""]


When you read this text file you can read the key from 0 to 1 less then index of =.
& fopr reading the  value 1 + index of = to 1 less then index of ;

Another way is to use a XML file.
Make a empty xml file with default values with nodes

<UserSettings UserId="">
   <Maximize>1</Maximize>
   <ToolBar>0</ToolBar>
</UserSettings>

Now read this xml file in your code through XMLDocument & get the required values.

Don't use settings.settings & App.config for this as they contain application specific settings not user specific.


Anurag
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
DauheeCommented:

READ SETTINGS:
dsConfig = New DataSet
dsConfig.ReadXml('c:\file.xml')
msgbox dsConfig.Tables(0).Rows(0).Item('mydatafield')

WRITE SETTINGS:
dsConfig.Tables(0).Rows(0).Item('mydatafield') = 'changed value'
dsConfig.AcceptChanges()
dsConfig.WriteXml('c:\file.xml')

XML FILE:
<?xml version="1.0" standalone="yes"?>
<Settings>
  <MYTABLE>
    <mydatafield>Hello there this is a setting</mydatafield>
    <anotherfield>bla bla Bla</anotherfield>
  </MYTABLE>
</Settings>
0
 
cherrera2001Commented:
One possible solution is if you saved the user settings in an object, to serialize the object to an xml file. This allows for a clean and easy way to save and retrieve the data. There is also an msdn article on different ways to approach this here: http://msdn.microsoft.com/en-us/library/ms973902.aspx.
0
 
ktmedlinAuthor Commented:
Im going with the XML file option.  Thanks to all the experts for the comments.
0

Featured Post

NEW Veeam Agent for Microsoft Windows

Backup and recover physical and cloud-based servers and workstations, as well as endpoint devices that belong to remote users. Avoid downtime and data loss quickly and easily for Windows-based physical or public cloud-based workloads!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now