回答下划线和注释后面的留空段即可
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属性设为频道的名称
}
}
没看懂你要问啥