Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Save user settings in .Net Windows application

Posted on 2008-06-14
7
4,233 Views
Last Modified: 2013-11-07
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
Comment
Question by:ktmedlin
7 Comments
 
LVL 11

Expert Comment

by:Anurag Agarwal
ID: 21787608
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
 

Author Comment

by:ktmedlin
ID: 21787634
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
 
LVL 11

Accepted Solution

by:
Anurag Agarwal earned 500 total points
ID: 21787669
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
Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

 
LVL 7

Expert Comment

by:Dauhee
ID: 21788446

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
 
LVL 70

Expert Comment

by:Éric Moreau
ID: 21788532
0
 
LVL 1

Expert Comment

by:cherrera2001
ID: 21808739
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
 

Author Closing Comment

by:ktmedlin
ID: 31467295
Im going with the XML file option.  Thanks to all the experts for the comments.
0

Featured Post

Active Directory Webinar

We all know we need to protect and secure our privileges, but where to start? Join Experts Exchange and ManageEngine on Tuesday, April 11, 2017 10:00 AM PDT to learn how to track and secure privileged users in Active Directory.

Question has a verified solution.

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

Suggested Solutions

For most people, the WrapPanel seems like a magic when they switch from WinForms to WPF. Most of us will think that the code that is used to write a control like that would be difficult. However, most of the work is done by the WPF engine, and the W…
Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
The viewer will learn how to synchronize PHP projects with a remote server in NetBeans IDE 8.0 for Windows.
The viewer will learn how to use and create new code templates in NetBeans IDE 8.0 for Windows.

829 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