我有一个XML的数据文件,怎样让它只在主窗里只加载一次,之后在子窗体里每一次对数据进行操作时就直接操作这个加载好的数据集啊?我以前用的方法是每要操作一次数据都要拿DataSet来读取一次XML数据,觉得这样的方法很麻烦,而且对于大的数据文件来说肯定会加长反应时间.但又不知该如何写如上的这样一个方法,请大家帮帮忙啊!谢谢了啊!

解决方案 »

  1.   

    DataSet.ReadXML(string path,readSchem rs)
    readSchem 加上模式以后,速度会快N倍,
    一个公共类的,静态属性 可以为整个程序集所共享,所以,你创建 一个静态的属性就可以了。
      

  2.   

    1.主窗体定义静态属性
        public partial class FormMain : Form
        {
            public static DataSet ds = null;
            public FormMain()
            {
                InitializeComponent();
            }
            private void FormMain_Load(object sender, EventArgs e)
            {
                if (null == ds)
                {
                    ds = new DataSet();
                    ds.ReadXml(@"c:\dsfile.xml");
                }
            }
        }2.子窗体直接调用
        public partial class FormSub : Form
        {
            public FormSub()
            {
                InitializeComponent();
            }
            private void FormSub_Load(object sender, EventArgs e)
            {
                FormMain.ds.Tables[0].Rows.Count;
            }
        }说明:对于复杂的XML结构,使用System.Xml.XmlDocument解析。我一般把全局内容放在Program.cs里解析。