vb.net中,窗体对话框中各个参数数据保存到文件中的讨论与请教!

ruan1978 2019-03-09 09:41:53
我现在在做一个项目,这个窗体对话框中有几十个数据需要保存到文件中,对话框中的数据有显示在文本框的,也有现在在下拉列表框的,也有在datagridview中的数据。首先这些数据,我是先统一放到数组里呢?还是依次一个个保存进去。就是读写效率的问题。
我的对话框中需要保存的数据的各个窗口截图如下:
第一个

第二个

第三个

第四个

我要实现的操作:
当这个窗体载入时,从文件里去读取数据依次赋值给各个控件对应显示出来;当这个界面中有数据修改,按“保存”按钮,各个参数保存到数据文件中。这是我想实现的操作。
我遇到的问题:
1.觉得这么多数据依次一个个赋值是不是效率比较低下?
2.保存时,我是一个个参数保存还是用个循环一次性赋值到数组保存?
3.用xml文件方式会不会更好?
请大牛们提宝贵意见?用哪种文件方式保存好?比如数据文件或者xml文件?将控件里的值依次读出来赋值到数组里这样合适吗?因为出现不同的控件,有textBox,combobox,datagridview?
谢谢各位大牛。
...全文
1539 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruan1978 2019-03-24
  • 打赏
  • 举报
回复
引用 20 楼 numbermax 的回复:
用ResXResourceWriter() 写到resx文件里,初始化的时候从resx里面取出来。
能给个例子吗?
numbermax 2019-03-24
  • 打赏
  • 举报
回复
用ResXResourceWriter() 写到resx文件里,初始化的时候从resx里面取出来。
ltzeee 2019-03-12
  • 打赏
  • 举报
回复
谢谢楼主分享 学习了 找了很久~
yiyot 2019-03-11
  • 打赏
  • 举报
回复
谢谢楼主的分享
奋斗的小伙� 2019-03-11
  • 打赏
  • 举报
回复
感觉非常实用我喜欢,谢谢楼主的分享
ruan1978 2019-03-11
  • 打赏
  • 举报
回复
引用 11 楼 OrdinaryCoder 的回复:
[quote=引用 8 楼 ruan1978 的回复:] [quote=引用 7 楼 OrdinaryCoder 的回复:] [quote=引用 6 楼 ruan1978 的回复:] [quote=引用 1 楼 OrdinaryCoder 的回复:] 1.我觉得以这种数据量并不算大吧,效率上肉眼应该是感觉不出来。 2.3.我觉得你应该将你的参数分组整理出一个个的数据模型,之后采用xml序列化反序列化的方式存取数值,这样每一个字段对应一个参数便于维护,存取上也比较简单。 以上个人理解,有好想法大家一起讨论。
有具体参考示例让我看看吗? [/quote]

  /// <summary>
        /// XML序列化某一类型到指定的文件
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="obj"></param>
        /// <param name="type"></param>
        public static void SerializeToXml<T>(string filePath, T obj)
        {
            try
            {
                using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath))
                {
                    System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
                    xs.Serialize(writer, obj);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
        /// <summary>
        /// 从某一XML文件反序列化到某一类型
        /// </summary>
        /// <param name="filePath">待反序列化的XML文件名称</param>
        /// <param name="type">反序列化出的</param>
        /// <returns></returns>
        public static T DeserializeFromXml<T>(string filePath)
        {
            try
            {
                if (!System.IO.File.Exists(filePath))
                    throw new ArgumentNullException(filePath + " not Exists");

                using (System.IO.StreamReader reader = new System.IO.StreamReader(filePath))
                {
                    System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
                    T ret = (T)xs.Deserialize(reader);
                    return ret;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return default(T);
            }
        }
上面是xml序列化反序列化 数据模型根据界面上有的数据定义(类),每个字段对应一个TextBox、Combox等。[/quote] 我看起来感觉有点吃力,有实际调用吗?[/quote]

string fileName =“任意路径/123.xml”;
Cat cat =new Cat();//new一个你自己的数据模型对象
cat.Name = "小花";
SerializeXmlSwitch.SerializeToXml<JobScript>(fileName, cat );
[/quote] 我把它翻译成对应的vb.net代码。。。
weixin_44752129 2019-03-11
  • 打赏
  • 举报
回复
非常赞赞赞赞
hehehehhhehehe 2019-03-11
  • 打赏
  • 举报
回复
WEU9PQ4TEARG9'UEWT4E8;YUI
OrdinaryCoder 2019-03-11
  • 打赏
  • 举报
回复
引用 8 楼 ruan1978 的回复:
[quote=引用 7 楼 OrdinaryCoder 的回复:]
[quote=引用 6 楼 ruan1978 的回复:]
[quote=引用 1 楼 OrdinaryCoder 的回复:]
1.我觉得以这种数据量并不算大吧,效率上肉眼应该是感觉不出来。
2.3.我觉得你应该将你的参数分组整理出一个个的数据模型,之后采用xml序列化反序列化的方式存取数值,这样每一个字段对应一个参数便于维护,存取上也比较简单。
以上个人理解,有好想法大家一起讨论。

有具体参考示例让我看看吗?
[/quote]

/// <summary>
/// XML序列化某一类型到指定的文件
/// </summary>
/// <param name="filePath"></param>
/// <param name="obj"></param>
/// <param name="type"></param>
public static void SerializeToXml<T>(string filePath, T obj)
{
try
{
using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath))
{
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
xs.Serialize(writer, obj);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
/// <summary>
/// 从某一XML文件反序列化到某一类型
/// </summary>
/// <param name="filePath">待反序列化的XML文件名称</param>
/// <param name="type">反序列化出的</param>
/// <returns></returns>
public static T DeserializeFromXml<T>(string filePath)
{
try
{
if (!System.IO.File.Exists(filePath))
throw new ArgumentNullException(filePath + " not Exists");

using (System.IO.StreamReader reader = new System.IO.StreamReader(filePath))
{
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
T ret = (T)xs.Deserialize(reader);
return ret;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return default(T);
}
}

上面是xml序列化反序列化 数据模型根据界面上有的数据定义(类),每个字段对应一个TextBox、Combox等。[/quote]
我看起来感觉有点吃力,有实际调用吗?[/quote]

string fileName =“任意路径/123.xml”;
Cat cat =new Cat();//new一个你自己的数据模型对象
cat.Name = "小花";
SerializeXmlSwitch.SerializeToXml<JobScript>(fileName, cat );
OrdinaryCoder 2019-03-11
  • 打赏
  • 举报
回复
引用 9 楼 ruan1978 的回复:
[quote=引用 8 楼 ruan1978 的回复:]
[quote=引用 7 楼 OrdinaryCoder 的回复:]
[quote=引用 6 楼 ruan1978 的回复:]
[quote=引用 1 楼 OrdinaryCoder 的回复:]
1.我觉得以这种数据量并不算大吧,效率上肉眼应该是感觉不出来。
2.3.我觉得你应该将你的参数分组整理出一个个的数据模型,之后采用xml序列化反序列化的方式存取数值,这样每一个字段对应一个参数便于维护,存取上也比较简单。
以上个人理解,有好想法大家一起讨论。

有具体参考示例让我看看吗?
[/quote]

/// <summary>
/// XML序列化某一类型到指定的文件
/// </summary>
/// <param name="filePath"></param>
/// <param name="obj"></param>
/// <param name="type"></param>
public static void SerializeToXml<T>(string filePath, T obj)
{
try
{
using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath))
{
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
xs.Serialize(writer, obj);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
/// <summary>
/// 从某一XML文件反序列化到某一类型
/// </summary>
/// <param name="filePath">待反序列化的XML文件名称</param>
/// <param name="type">反序列化出的</param>
/// <returns></returns>
public static T DeserializeFromXml<T>(string filePath)
{
try
{
if (!System.IO.File.Exists(filePath))
throw new ArgumentNullException(filePath + " not Exists");

using (System.IO.StreamReader reader = new System.IO.StreamReader(filePath))
{
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
T ret = (T)xs.Deserialize(reader);
return ret;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return default(T);
}
}

上面是xml序列化反序列化 数据模型根据界面上有的数据定义(类),每个字段对应一个TextBox、Combox等。[/quote]
我看起来感觉有点吃力,有实际调用吗?[/quote]
你这是c#的代码示例么[/quote]
这个是C# 序列化反序列化xml的函数 随便建个类就可以试验 ,或者在控制台工程里也可以
ruan1978 2019-03-11
  • 打赏
  • 举报
回复
引用 8 楼 ruan1978 的回复:
[quote=引用 7 楼 OrdinaryCoder 的回复:] [quote=引用 6 楼 ruan1978 的回复:] [quote=引用 1 楼 OrdinaryCoder 的回复:] 1.我觉得以这种数据量并不算大吧,效率上肉眼应该是感觉不出来。 2.3.我觉得你应该将你的参数分组整理出一个个的数据模型,之后采用xml序列化反序列化的方式存取数值,这样每一个字段对应一个参数便于维护,存取上也比较简单。 以上个人理解,有好想法大家一起讨论。
有具体参考示例让我看看吗? [/quote]

  /// <summary>
        /// XML序列化某一类型到指定的文件
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="obj"></param>
        /// <param name="type"></param>
        public static void SerializeToXml<T>(string filePath, T obj)
        {
            try
            {
                using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath))
                {
                    System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
                    xs.Serialize(writer, obj);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
        /// <summary>
        /// 从某一XML文件反序列化到某一类型
        /// </summary>
        /// <param name="filePath">待反序列化的XML文件名称</param>
        /// <param name="type">反序列化出的</param>
        /// <returns></returns>
        public static T DeserializeFromXml<T>(string filePath)
        {
            try
            {
                if (!System.IO.File.Exists(filePath))
                    throw new ArgumentNullException(filePath + " not Exists");

                using (System.IO.StreamReader reader = new System.IO.StreamReader(filePath))
                {
                    System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
                    T ret = (T)xs.Deserialize(reader);
                    return ret;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return default(T);
            }
        }
上面是xml序列化反序列化 数据模型根据界面上有的数据定义(类),每个字段对应一个TextBox、Combox等。[/quote] 我看起来感觉有点吃力,有实际调用吗?[/quote] 你这是c#的代码示例么
ruan1978 2019-03-11
  • 打赏
  • 举报
回复
引用 7 楼 OrdinaryCoder 的回复:
[quote=引用 6 楼 ruan1978 的回复:] [quote=引用 1 楼 OrdinaryCoder 的回复:] 1.我觉得以这种数据量并不算大吧,效率上肉眼应该是感觉不出来。 2.3.我觉得你应该将你的参数分组整理出一个个的数据模型,之后采用xml序列化反序列化的方式存取数值,这样每一个字段对应一个参数便于维护,存取上也比较简单。 以上个人理解,有好想法大家一起讨论。
有具体参考示例让我看看吗? [/quote]

  /// <summary>
        /// XML序列化某一类型到指定的文件
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="obj"></param>
        /// <param name="type"></param>
        public static void SerializeToXml<T>(string filePath, T obj)
        {
            try
            {
                using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath))
                {
                    System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
                    xs.Serialize(writer, obj);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
        /// <summary>
        /// 从某一XML文件反序列化到某一类型
        /// </summary>
        /// <param name="filePath">待反序列化的XML文件名称</param>
        /// <param name="type">反序列化出的</param>
        /// <returns></returns>
        public static T DeserializeFromXml<T>(string filePath)
        {
            try
            {
                if (!System.IO.File.Exists(filePath))
                    throw new ArgumentNullException(filePath + " not Exists");

                using (System.IO.StreamReader reader = new System.IO.StreamReader(filePath))
                {
                    System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
                    T ret = (T)xs.Deserialize(reader);
                    return ret;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return default(T);
            }
        }
上面是xml序列化反序列化 数据模型根据界面上有的数据定义(类),每个字段对应一个TextBox、Combox等。[/quote] 我看起来感觉有点吃力,有实际调用吗?
「已注销」 2019-03-11
  • 打赏
  • 举报
回复
https://download.csdn.net/download/wu9797/9997202
jinqihui 2019-03-11
  • 打赏
  • 举报
回复
参孝,很用用,!!!
OrdinaryCoder 2019-03-10
  • 打赏
  • 举报
回复
引用 6 楼 ruan1978 的回复:
[quote=引用 1 楼 OrdinaryCoder 的回复:]
1.我觉得以这种数据量并不算大吧,效率上肉眼应该是感觉不出来。
2.3.我觉得你应该将你的参数分组整理出一个个的数据模型,之后采用xml序列化反序列化的方式存取数值,这样每一个字段对应一个参数便于维护,存取上也比较简单。
以上个人理解,有好想法大家一起讨论。

有具体参考示例让我看看吗?
[/quote]

/// <summary>
/// XML序列化某一类型到指定的文件
/// </summary>
/// <param name="filePath"></param>
/// <param name="obj"></param>
/// <param name="type"></param>
public static void SerializeToXml<T>(string filePath, T obj)
{
try
{
using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath))
{
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
xs.Serialize(writer, obj);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
/// <summary>
/// 从某一XML文件反序列化到某一类型
/// </summary>
/// <param name="filePath">待反序列化的XML文件名称</param>
/// <param name="type">反序列化出的</param>
/// <returns></returns>
public static T DeserializeFromXml<T>(string filePath)
{
try
{
if (!System.IO.File.Exists(filePath))
throw new ArgumentNullException(filePath + " not Exists");

using (System.IO.StreamReader reader = new System.IO.StreamReader(filePath))
{
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
T ret = (T)xs.Deserialize(reader);
return ret;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return default(T);
}
}

上面是xml序列化反序列化 数据模型根据界面上有的数据定义(类),每个字段对应一个TextBox、Combox等。
zj_zwl 2019-03-09
  • 打赏
  • 举报
回复
遍历一下窗体中的所有控件 , 然后按控件的类型调用不同的保存数据方法
OrdinaryCoder 2019-03-09
  • 打赏
  • 举报
回复
1.我觉得以这种数据量并不算大吧,效率上肉眼应该是感觉不出来。
2.3.我觉得你应该将你的参数分组整理出一个个的数据模型,之后采用xml序列化反序列化的方式存取数值,这样每一个字段对应一个参数便于维护,存取上也比较简单。
以上个人理解,有好想法大家一起讨论。
ruan1978 2019-03-09
  • 打赏
  • 举报
回复
引用 1 楼 OrdinaryCoder 的回复:
1.我觉得以这种数据量并不算大吧,效率上肉眼应该是感觉不出来。 2.3.我觉得你应该将你的参数分组整理出一个个的数据模型,之后采用xml序列化反序列化的方式存取数值,这样每一个字段对应一个参数便于维护,存取上也比较简单。 以上个人理解,有好想法大家一起讨论。
有具体参考示例让我看看吗?
ruan1978 2019-03-09
  • 打赏
  • 举报
回复
引用 3 楼 以专业开发人员为伍 的回复:
现在用 json 序列化更多一些。20年前时兴 xml 序列化。
请您给出高见。
ruan1978 2019-03-09
  • 打赏
  • 举报
回复
引用 1 楼 OrdinaryCoder 的回复:
1.我觉得以这种数据量并不算大吧,效率上肉眼应该是感觉不出来。 2.3.我觉得你应该将你的参数分组整理出一个个的数据模型,之后采用xml序列化反序列化的方式存取数值,这样每一个字段对应一个参数便于维护,存取上也比较简单。 以上个人理解,有好想法大家一起讨论。
反正大概加起来有7,8十个数据吧
加载更多回复(1)

16,556

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧