Объектная модель вот такая:
Получить полный список каналов можно вот так:
public void FillTree()
{
IFeedFolder iff = ((IFeedFolder) fm.RootFolder);
treeView1.BeginUpdate();
AppendFeeds(iff, null);
treeView1.EndUpdate();
}
void AppendFeeds(IFeedFolder folder, TreeNode parent)
{
TreeNode old_parent = parent;
foreach (IFeedFolder subfolder in (IFeedsEnum)folder.Subfolders)
{
if (parent == null)
parent = treeView1.Nodes.Add(subfolder.Name);
else
parent = parent.Nodes.Add(subfolder.Name);
AppendFeeds(subfolder, parent);
}
parent = old_parent;
foreach (IFeed feed in (IFeedsEnum)folder.Feeds)
{
if (parent == null)
treeView1.Nodes.Add(feed.Name);
else
parent.Nodes.Add(feed.Name);
}
}
В данном случае я заполняю данными TreeView, поскольку в общем виде мы имеем древовидную структуру, если вспомнить про возможность распределять каналы по папкам и подпапкам. Соответственно, самый простой способ - рекурсивная функция.
Чтобы получить выбранный из списка канал, надо указать его полное имя, включающее все папки и подпапки. Примерно вот так:
IFeed feed = (IFeed)fm.GetFeed(e.Node.FullPath);
Ну а дальше ничего сложного :)
Комментариев нет:
Отправить комментарий