c# winform 我需要用户设置的图片保存路径 保存到ini 或者是xml中

路径由 folderBrowserDialog 获取,然后存到里面,用的时候在读取,我想知道写入、读取详细的实现办法?

实际上有更简单的办法:微软vs提供了专门的配置文件。个人认为用这个更好,可以为空间设置绑定存取更方便。
添加->新建项->设置文件(后缀.setting【多专业^.^】)
打开后会有四个属性【名称、类型、范围、值】在第一行写上
SavePath、string、用户、C:\默认路径
OK。下面是调用和保存的代码:相当简单
FolderBrowserDialog fbd = new FolderBrowserDialog();
private void Form1_Load(object sender, EventArgs e)
{//读取,Settings1是配置文件名,被自动定义成一个类
textBox1.Text = Settings1.Default["SavePath"].ToString();
fbd.SelectedPath = textBox1.Text;
}

private void button1_Click(object sender, EventArgs e)
{//保存
if (DialogResult.OK == fbd.ShowDialog()) {
Settings1.Default["SavePath"] = fbd.SelectedPath;
Settings1.Default.Save();//****************很重要哦
//需要注意的是,修改后在Settings1文件中看不见变化,不过没关系,他确实已经变了,不行在运行下看看
textBox1.Text = Settings1.Default["SavePath"].ToString();
}
}

这个要比xml方法简单了
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-16
引用命名空间using System.Xml;
folderBrowserDialog指定路径代码:在一个按钮单击事件中:
folderBrowserDialog1.ShowDialog();
textBox1.Text=folderBrowserDialog1.SelectedPath;
//存储
XmlDocument xml = new XmlDocument();
//创建根节点
XmlElement root= xml.CreateElement("root");
xml.AppendChild(root);
//创建filepath节点
XmlElement filepath = xml.CreateElement("filepath");
filepath.InnerText = textBox1.Text;
root.AppendChild(filepath);
xml.Save("路径.xml");
//在另一个事件中读取
XmlDocument xml = new XmlDocument();
xml.Load("路径.xml");
XmlNodeList list = xml.SelectSingleNode("root").ChildNodes;
//取出存储的路径
MessageBox.Show(list[0].InnerText);追问

如果我还要存多个例如 视频路径、音乐路径等到 同一个xml里 该怎么实现

追答

如果你要存多个的话,最好是吧视频啊、音乐啊分成组比如:
XmlDocument xml = new XmlDocument();
//创建根节点
XmlElement root= xml.CreateElement("root");
xml.AppendChild(root);
//创建一个组集合
XmlElement zu = xml.CreateElement("zu");
XmlElement filepath = xml.CreateElement("filepath");
filepath.InnerText = textBox1.Text;
//注意这里,由于你的filepath放到zu里了,所以他是zu的AppendChild
zu.AppendChild(filepath);
XmlElement museicpath = xml.CreateElement("musicpath");
musicpath.InnerText = textBox1.Text;
//music也是如此,视频的话也相同就不写了
zu.AppendChild(fmusicpath);
//最后zu是根节点的AppendChild
root..AppendChild(zu);
xml.Save("路径.xml");
关键要看你的xml要保存什么样的格式

本回答被提问者采纳
第2个回答  2011-03-16
这个是我的程序中的一个类,你参考一下
/// <summary>
/// 配置文件辅助类,负责读取和写入INI配置文件的相关信息
/// </summary>
public class ConfigHelper
{
//声明即将调用的非托管函数(这两个函数负责INI文件的读取和写入)
[DllImport("Kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("Kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal,
int size, string filePath);

/// <summary>
/// 获取配置文件中的SQL Server服务器名
/// </summary>
/// <returns></returns>
public static string GetSqlServerNameFromConfig()
{
string name = "";
StringBuilder temp = new StringBuilder();
try
{
string path = System.Windows.Forms.Application.StartupPath.ToString() + @"\Config.ini";
GetPrivateProfileString("SQL Server 2005 Settings", "server", "", temp, 255, path);
name = temp.ToString();
}
catch (Exception ex)
{
MessageBox.Show("获取SQL Server服务器名失败:" + ex.Message);
}
return name;
}

/// <summary>
/// 获取配置文件的SQL Server用户名
/// </summary>
/// <returns></returns>
public static string GetUserNameFromConfig()
{
string uid = string.Empty;
StringBuilder temp = new StringBuilder();
try
{
string path = Application.StartupPath.ToString() + @"\Config.ini";
GetPrivateProfileString("SQL Server 2005 Settings", "uid", "", temp, 255, path);
uid = temp.ToString();
}
catch (Exception ex)
{
MessageBox.Show("发生错误,获取SQL Server用户名失败:" + ex.Message);
}
return uid;
}

/// <summary>
/// 获取配置文件的SQL Server登录密码
/// </summary>
/// <returns></returns>
public static string GetPasswordFromConfig()
{
string pwd = "";
StringBuilder temp = new StringBuilder();
{
try
{
string path = System.Windows.Forms.Application.StartupPath.ToString() + @"\Config.ini";
GetPrivateProfileString("SQL Server 2005 Settings", "pwd", "", temp, 255, path);
pwd = temp.ToString();
}
catch (Exception ex)
{
MessageBox.Show("发生错误,获取SQL Server登录密码失败:" + ex.Message);
}
}
return pwd;
}

/// <summary>
/// 向配置文件中写入服务器名
/// </summary>
/// <param name="name"></param>
public static void WriteSqlServerNameInConfig(string name)
{
try
{
WritePrivateProfileString("SQL Server 2005 Settings", "server", name, Application.StartupPath.ToString() + @"\Config.ini");
}
catch (Exception ex)
{
MessageBox.Show("发生错误:" + ex.Message);
}
}

/// <summary>
/// 向配置文件中写入登录名
/// </summary>
/// <param name="name"></param>
public static void WriteUserNameInConfig(string name)
{
try
{
WritePrivateProfileString("SQL Server 2005 Settings", "uid", name, Application.StartupPath.ToString() + @"\Config.ini");
}
catch (Exception ex)
{
MessageBox.Show("发生错误:" + ex.Message);
}
}

/// <summary>
/// 向配置文件中写入登录密码
/// </summary>
/// <param name="name"></param>
public static void WritePasswordInConfig(string name)
{
try
{
WritePrivateProfileString("SQL Server 2005 Settings", "pwd", name, Application.StartupPath.ToString() + @"\Config.ini");
}
catch (Exception ex)
{
MessageBox.Show("发生错误:" + ex.Message);
}
}
}
相似回答