c#练习,关于电视频道节目单的习题

回答下划线和注释后面的留空段即可

 

namespace TVXmlRead
{
    public partial class MainForm : Form
    {
        /// <summary>
        /// 管理器类
        /// </summary>
        private ChannelManager myManager = new ChannelManager();

        public MainForm()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 电视台初始化
        /// </summary>
        private void InitChannel()
        {
            //加载所有频道信息
            myManager.LoadChannel();
            //刷新TreeView显示
            UpdateTreeView();
        }

        /// <summary>
        /// 窗体加载事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MainForm_Load(object sender, EventArgs e)
        {
            this.SetVisible(true);
            this.InitChannel();
        }

        /// <summary>
        /// 控制DataGridView和listView的显示
        
        /// </summary>
        /// <param name="boolInfo"></param>
        private void SetVisible(bool boolInfo)
        {
            this.dgvProgList.Visible = boolInfo;
        }

        /// <summary>
        /// 刷新频道列表
        /// </summary>
        private void UpdateTreeView()
        {
            //清空所有节点

            this.tvChannel.Nodes.Clear();

            //初始化根结点
            TreeNode nodeFirstLevel = new TreeNode("我的电视台");
            nodeFirstLevel.ImageIndex = 0;
            this.tvChannel.Nodes.Add(nodeFirstLevel);
            //加载“所有电视台”根节点
            nodeFirstLevel = __________________;
            this.tvChannel.Nodes.Add(_______________);

            //加载“所有电视台”子节点

            foreach (ChannelBase dicOne in myManager.FullChannel.Values)
            {
                TreeNode node = new TreeNode();
                node.Text = dicOne.ChannelName;
                node.Tag = dicOne;
                node.ImageIndex = 1;
                this.tvChannel.Nodes[1].Nodes.Add(_______);

            }

            //加载“我的电视台”

            foreach (ChannelBase dicOne in myManager.Seria.MyFavor)
            {
                TreeNode node = new TreeNode();
                node.Text = dicOne.ChannelName;
                node.Tag = dicOne;
                node.ImageIndex = 1;
                this.tvChannel.Nodes[0].Nodes.Add(node);
            }

            //展开所有节点

            tvChannel.ExpandAll();
        }


        /// <summary>
        /// 将一个电台添加到我的电台中

        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsmAddToFavor_Click(object sender, EventArgs e)
        {
            TreeNode node = this.tvChannel.SelectedNode;
            //没有选中任何节点,返回

            if (node == null)
            {
                return;
            }
            ChannelBase ch = (ChannelBase)node.Tag;
            //保证不重复

            foreach (TreeNode nodeItem in this.tvChannel.Nodes[0].Nodes)
            {
                if (nodeItem.Text.Trim() == node.Text.Trim())
                {
                    return;//发现“我的收藏夹”中有这个电台,就退出,不再执行添加工作。

                }
            }
            this.myManager.Seria.MyFavor.Add(ch);
            this.UpdateTreeView();
        }


        /// <summary>
        /// 右键单击树型菜单,控制右键菜单的菜单项的显示:

        /// 即“所有电视台”的子节点的右键中只显示“加入到我的电台”

        /// 而“我的电视台”的子节点的右键只能显示"删除"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tvChannel_MouseClick(object sender, MouseEventArgs e)
        {
            //只处理右键事件

            TreeNode node = this.tvChannel.SelectedNode;
            if (node != null && node.Level != 0)//有节点被选中且不是顶级节点
            {
                //这句代码保证右键点击树的时候,那个节点处于选中状态

                if (node.Parent.Text == "所有电视台")
                {
                    //使"加入到我的电台"这个菜单项可见

                    cmenuRight.Items[1].Visible = false;
                    cmenuRight.Items[0].Visible = true;
                }
                else
                {
                    //使“删除”菜单项可见
                    cmenuRight.Items[0].Visible = false;
                    cmenuRight.Items[1].Visible = true;
                }
            }
            else
            {
                cmenuRight.Items[1].Visible = false;
                cmenuRight.Items[0].Visible = false;
            }
        }

        private void TMenuItemDel_Click(object sender, EventArgs e)
        {
            TreeNode node = this.tvChannel.SelectedNode;
            //没有选中任何节点,返回
            if (node == null)
            {
                return;
            }
            ChannelBase ch = (ChannelBase)node.Tag;

            this.myManager.Seria.MyFavor.Remove(ch);
            this.UpdateTreeView();
        }

        /// <summary>
        /// 树形菜单选项改变事件:改变频道,加载选中频道的节目信息

        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tvChannel_AfterSelect(object sender, TreeViewEventArgs e)
        {
            //控制DataGridView的显示

            this.SetVisible(true);
            //选中e.Node的level节点

            if (________________)
            {
                ChannelBase ch = (ChannelBase)e.Node.Tag;
                if (ch.ProgramList != null)
                {
                    ch.ProgramList.Clear();//清除当前节目单

                }
                ch.Fetch(); //读取节目单

                this.dgvProgList.DataSource = ____________; //绑定节目单ProgramList到数据展示控件显示

                this.dgvProgList.Tag = ch.ChannelName; //将当前Dgv的Tag属性设为频道的名称
            }
        }

没看懂你要问啥