Re: Reading config file from another app
Daniel Weese <[email protected]> Tue, 14 Nov 2006 16:58:50 -0600
| Newsgroups | gmane.comp.windows.devel.dotnet.cx |
|---|---|
| Message-ID | <[email protected]> |
It's a hybrid of some code I found online, and my own code.
http://www.codeproject.com/csharp/xmlconfig.asp is the project that helped me.
Code is below. I'll post the Write portion when I get it all working.
Dan Weese
private void formManageSettings_Load(object sender, System.EventArgs e)
{
string sValue = ""; //Primarily so I can see the results of my string
XmlDocument doc = loadConfigDocument();
int iEnd = this.tabControlSettings.TabPages.Count;
//Loop through all of the fields on the form
//Since the form only has text and combo boxes, no need for others just yet.
//Each field has the Config Setting Name in the Tag property
//so I can limit the lines of code. This way you can loop through the controls
//instead of making a hard coded line for each element.
//As new fields are added to the form, no additional code is required
for (int i = 0; i < iEnd; i++)
{
foreach (Control ctrl in this.tabControlSettings.TabPages[i].Controls)
{
if (ctrl is TextBox)
{
sValue = "//appSettings//add[@key='" + ctrl.Tag.ToString() + "']";
ctrl.Text = GetValue(doc,sValue);
}
if (ctrl is ComboBox)
{
sValue = "//appSettings//add[@key='" + ctrl.Tag.ToString() + "']";
ctrl.Text = GetValue(doc,sValue);
}
}
}
}
private XmlNode node;
public string GetValue (XmlDocument doc, string key)
{
return Convert.ToString(GetValue(doc,key, typeof(string)));
}
public new object GetValue (XmlDocument doc, string key, System.Type sType)
{
object ro = String.Empty;
string sNode = key.Substring(0, key.LastIndexOf("//"));
// retrieve the selected node
try
{
node = doc.SelectSingleNode(sNode);
if( node != null )
{
// Xpath selects element that contains the key
XmlElement targetElem= (XmlElement)node.SelectSingleNode(key) ;
if (targetElem!=null)
{
ro = targetElem.GetAttribute("value");
}
}
if (sType == typeof(string))
return Convert.ToString(ro);
else
if (sType == typeof(bool))
{
if (ro.Equals("True") || ro.Equals("False"))
return Convert.ToBoolean(ro);
else
return false;
}
else
if (sType == typeof(int))
return Convert.ToInt32(ro);
else
if (sType == typeof(double))
return Convert.ToDouble(ro);
else
if (sType == typeof(DateTime))
return Convert.ToDateTime(ro);
else
return Convert.ToString(ro);
}
catch
{
return String.Empty;
}
}
private static XmlDocument loadConfigDocument()
{
//Load the document once since we have hundreds of properties to get
XmlDocument doc = null;
try
{
doc = new XmlDocument();
doc.Load(getConfigFilePath());
return doc;
}
catch (System.IO.FileNotFoundException e)
{
throw new Exception("No configuration file found.", e);
}
}
private static string getConfigFilePath()
{
return Application.StartupPath + "\\ReLeaf7.exe.config";
}
===================================
This list is hosted by DevelopMentor® http://www.develop.com
View archives and manage your subscription(s) at http://discuss.develop.com