none
使用报表向导,出现“未将对象引用设置到对象的实例”的错误提示 RRS feed

  • 问题

  • 我自定义了一个对象管理类,并试图使用报表向导生成打印这类对象的报表,但是我得到了“未将对象引用设置到对象的实例”的错误提示。

    我不太清楚问题所在。也许是因为我将对象都定义成静态了?

    using System;
    using System.ComponentModel;
    using System.Xml.Serialization;
    using System.IO;
    
    namespace 河之南舞蹈.实体
    {
        /// <summary>
        /// 保存教室队列,提供编号计算功能
        /// </summary>
        [Serializable]
        public class 教室管理
        {
    
            static BindingList<教室> 所有教室 = new BindingList<教室>();
    
            public static BindingList<教室> 获取所有教室()
            {
                return 所有教室;
            }
    
            static public bool 新增教室(教室 新教室)
            {
                if (检查教室编号是否重复(新教室.编号)==true) return false;
    
                所有教室.Add(新教室);
                return true;
            }
    
            static public bool 删除教室(string 编号)
            {
                foreach (教室 item in 所有教室)
                {
                    if (item.编号==编号)
                    {
                        所有教室.Remove(item);
                        return true;
                    }
                }
                return false;
            }
    
            public static bool 检查教室编号是否重复(string 输入编号)
            {
                
    
                foreach (教室 item in 所有教室)
                {
                    if (item.编号==输入编号) 
                    {
                        return true;
                    }
                }
                return false;
            }
    
            public static void 清空教室队列()
            {
                所有教室.Clear();
            }
    
            public static string 尝试生成新教室编号(string 输入编号 = "",string 学校码="1",string 校内分区码="2")
            {
                string 输出编号 = "";
    
                if (string.IsNullOrEmpty(输入编号))
                {
                    //教室编号的编码定义,放在编码定义里
                    输出编号 = "11" + 学校码 + 校内分区码 + "01";
                }
                else
                {
                    int the5 = int.Parse(输入编号.Substring(4, 1));
                    int the6 = int.Parse(输入编号.Substring(5, 1));
    
                    if (the6 == 9) 输出编号 = 输入编号.Substring(0, 4) + (the5 * 10 + 10).ToString();
                    else 输出编号 = 输入编号.Substring(0, 5) + (the6 + 1).ToString();
                }
                return 输出编号;
            }
    
            public static string 设置教室编号(string 输入编号 = "",string 学校码="1",string 校内分区码="2")
            {
                
                string 新编号 = 输入编号;
    
                do
                {
                    新编号 = 尝试生成新教室编号(新编号, 学校码,校内分区码);
                } while (检查教室编号是否重复(新编号)==true);
    
                return 新编号;
            }
    
    
            public static void XML序列化所有教室(string savedFileName)
            {
    
                // Insert code to set properties and fields of the object.
                XmlSerializer mySerializer = new XmlSerializer(typeof(BindingList<教室>));
                // To write to a file, create a StreamWriter object.
                StreamWriter myWriter = new StreamWriter(savedFileName);
                mySerializer.Serialize(myWriter, 所有教室);
                myWriter.Close();
            }
    
            public static void 反XML序列化所有教室(string savedFileName)
            {
                //BindingList<教室> 教室队列 = new BindingList<教室>();
                XmlSerializer mySerializer = new XmlSerializer(typeof(BindingList<教室>));
                // To read the file, create a FileStream.
                FileStream myFileStream = new FileStream(savedFileName, FileMode.Open);
                // Call the Deserialize method and cast to the object type.
                
                所有教室 = (BindingList<教室>)mySerializer.Deserialize(myFileStream);
                myFileStream.Close();
            }
    
    
        }
    
        [Serializable]
        public class 教室:IComparable<教室>
        {
           // public int ID { get; set; }
            [XmlAttribute]
            public string 编号 { get; set; }
            [XmlAttribute]
            public string 名称 { get; set; }
            public BindingList<日程> 日程队列 { get; set; }
    
    
            public 教室()
            {
                //ID = 0;
                编号 = "999999";
                名称 = "未设置";
                日程队列 = new BindingList<日程>();
    
            }
    
            public void 日程队列初始化()
            {
                            for (int i = 0; i < 7; i++)
                            {
                                日程 新日程 = new 日程();
                                新日程.星期几 = "周" + (i + 1).ToString();
                                日程队列.Add(新日程);
                            }
            }
    
            int IComparable<教室>.CompareTo(教室 other)
            {
                throw new NotImplementedException();
            }
        }
    
        [Serializable]
        public class 日程
        {
            [XmlAttribute]
            public string 星期几 { get; set; }
            public string 时0 { get; set; }
            public string 时0半 { get; set; }
            public string 时1 { get; set; }
            public string 时1半 { get; set; }
            public string 时2 { get; set; }
            public string 时2半 { get; set; }
            public string 时3 { get; set; }
            public string 时3半 { get; set; }
            public string 时4 { get; set; }
            public string 时4半 { get; set; }
            public string 时5 { get; set; }
            public string 时5半 { get; set; }
            public string 时6 { get; set; }
            public string 时6半 { get; set; }
            public string 时7 { get; set; }
            public string 时7半 { get; set; }
            public string 时8 { get; set; }
            public string 时8半 { get; set; }
            public string 时9 { get; set; }
            public string 时9半 { get; set; }
            public string 时10 { get; set; }
            public string 时10半 { get; set; }
            public string 时11 { get; set; }
            public string 时11半 { get; set; }
            public string 时12 { get; set; }
            public string 时12半 { get; set; }
            public string 时13 { get; set; }
            public string 时13半 { get; set; }
            public string 时14 { get; set; }
            public string 时14半 { get; set; }
            public string 时15 { get; set; }
            public string 时15半 { get; set; }
            public string 时16 { get; set; }
            public string 时16半 { get; set; }
            public string 时17 { get; set; }
            public string 时17半 { get; set; }
            public string 时18 { get; set; }
            public string 时18半 { get; set; }
            public string 时19 { get; set; }
            public string 时19半 { get; set; }
            public string 时20 { get; set; }
            public string 时20半 { get; set; }
            public string 时21 { get; set; }
            public string 时21半 { get; set; }
            public string 时22 { get; set; }
            public string 时22半 { get; set; }
            public string 时23 { get; set; }
            public string 时23半 { get; set; }
            
            public 日程()
            {
                星期几 = "未指定";
    
                时0="";
                时0半 = "";
                时1 = "";
                时1半 = "";
                时2 = "";
                时2半 = "";
                时3 = "";
                时3半 = "";
                时4 = "";
                时4半 = "";
                时5 = "";
                时5半 = "";
                时6 = "";
                时6半 = "";
                时7 = "";
                时7半 = "";
                时8 = "";
                时8半 = "";
                时9 = "";
                时9半 = "";
                时10 = "";
                时10半 = "";
                时11 = "";
                时11半 = "";
                时12 = "";
                时12半 = "";
                时13 = "";
                时13半 = "";
                时14 = "";
                时14半 = "";
                时15 = "";
                时15半 = "";
                时16 = "";
                时16半 = "";
                时17 = "";
                时17半 = "";
                时18 = "";
                时18半 = "";
                时19 = "";
                时19半 = "";
                时20 = "";
                时20半 = "";
                时21 = "";
                时21半 = "";
                时22 = "";
                时22半 = "";
                时23 = "";
                时23半 = "";
                
    
            }
    
        }
    }
    

    2013年3月17日 3:16

全部回复