Solved

Save user settings in .Net Windows application

Posted on 2008-06-14
7
4,234 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
[X]
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
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
MS Dynamics Made Instantly Simpler

Make Your Microsoft Dynamics Investment Count  & Drastically Decrease Training Time by Providing Intuitive Step-By-Step WalkThru Tutorials.

 
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

Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

Question has a verified solution.

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

This article describes a technique for converting RTF (Rich Text Format) data to HTML and provides C++ source that does it all in just a few lines of code. Although RTF is coming to be considered a "legacy" format, it is still in common use... po…
zlib is a free compression library (a DLL) on which the popular gzip utility is built.  In this article, we'll see how to use the zlib functions to compress and decompress data in memory; that is, without needing to use a temporary file.  We'll be c…
The viewer will learn how to use NetBeans IDE 8.0 for Windows to connect to a MySQL database. Open Services Panel: Create a new connection using New Connection Wizard: Create a test database called eetutorial: Create a new test tabel called ee…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…

734 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