影院售票系统(2)

影院售票系统(2)


昨天上的少了个枚举图,补下
电影类型

public enum MovieType
    {
       Comedy,War,Romance,
       Action,Cartoon,
       Thriller,Adventure
    }

一 先实现左边treeview的加载功能
在这里插入图片描述
就是左边那个。
treeview控件加载的是xml文件里的内容,感觉挺绕的。上代码

    //初始化TreeView
        public void InitTreeView()
        {
            this.treeView1.BeginUpdate();
            this.treeView1.Nodes.Clear();

            string movieName = null;
            TreeNode movieNode = null;

            foreach (ScheduleItem item in c.Schedule.Items.Values)
            {
                if (movieName != item.Movie.MovieName)
                {
                    movieNode = new TreeNode(item.Movie.MovieName);
                    this.treeView1.Nodes.Add(movieNode);
                }
                TreeNode timeNode = new TreeNode(item.Time);
                movieNode.Nodes.Add(timeNode);
                movieName = item.Movie.MovieName;
            }
            this.treeView1.EndUpdate();
        }

这里的c是影院类Cinema的实例化对象,我们要调的是Cinema类的Schedule类型的对象
public Schedule Schedule { get; set; } ; 在构造函数里将其实例化。
Schedule类的 LoadItems()方法解析了xml文件,并且存到了本类的
public Dictionary<string, ScheduleItem> Items 集合里,所以读取Items集合数据前先要加载LoadItems()方法。

二. 根据treeview点击加载右边的电影项目,这个比较简单,根据选择的节点作为钥匙key,调用Items集合key这个的值,然后一一赋予到label上面

    //treeview事件,加载不同的电影海报
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            this.panel1.Visible = true;
            TreeNode t = treeView1.SelectedNode;
            if (t == null)
            {
                return;
            }
            if (t.Level != 1)
            {
                return;
            }
            key = t.Text;
            this.label2.Text = c.Schedule.Items[key].Movie.MovieName;
            this.label9.Text = c.Schedule.Items[key].Movie.Director;
            this.label10.Text = c.Schedule.Items[key].Movie.Actor;
            this.label11.Text = c.Schedule.Items[key].Movie.MovieType.ToString();
            this.label12.Text = c.Schedule.Items[key].Time;
            this.label13.Text = c.Schedule.Items[key].Movie.Price.ToString();
            this.pictureBox1.Image = Image.FromFile(c.Schedule.Items[key].Movie.Poster);
            //   this.label13.Text = c.schedu.Items[key].Movie.Actor;
            //清空座位
            ClearSeat();
            //遍历该场电影的座位销售情况
            foreach (Ticket ticket in c.SoldTickets)
            {
                foreach (Seat seat in c.Seats.Values)
                {
                    if ((ticket.ScheduleItem.Time == key)
                        && (ticket.Seat.SeatNum == seat.SeatNum))
                    {
                        seat.Color = Color.Red;
                    }
                }
            }
            UpdateSeat();
 

        }
 ClearSeat()和UpdateSeat()后面再讲,用于更新订票的座位情况的。

猜你喜欢

转载自blog.csdn.net/qq_43148907/article/details/84945408
今日推荐