提供“选择”的类

时间:2012-07-16 14:46:04

标签: c# selectall

有没有提供基本选择机制的课程?例如:

想象一下,我有使用C#编写的WAVE文件和简单的WAV-Editor。现在我可以将这个波形文件以图形表示形式显示为波形。在主菜单中,我可以点击编辑 - >选择All,将选择我的所有样本。

 MySelector ms = new MySelector (0, numOfSamples-1);
 ms.SelectAll;

当然,我可以选择范围块:

ms.Select (from, to);

甚至反转:

ms.InvertSelection ();

多选:

ms.AppendSelection (from ,to);

获取有关所选样本的信息:

for (int i=0; i< ms.Size; i++)
if (ms.SelectedAt (i)) DoSomeLogic ();

那么,那个班级已经写好了,还是我应该把它写成:O?

THX。

3 个答案:

答案 0 :(得分:1)

我无法找到任何“官方”(内置于框架中)的课程,这些课程模糊地与您描述的内容相匹配,但我发现this article可以帮助您前进 - 我可以'看到等同于你的InvertSelection()方法,但除此之外看起来很有希望。

编辑:进一步搜索后,我发现Jon Skeet在他的C#书中有一章关于创建通用范围类 - 请参阅他的网站here上的摘录。

答案 1 :(得分:1)

我不知道框架中只有这个的东西。看起来像是高度依赖于你想要如何跟踪选择(Selected属性,索引范围)的东西。

答案 2 :(得分:1)

你已经写了这课多少课?事实上,我看到你描述

  1. 一组两个数字(长,可能是?)来定义时间范围或样本选择。
  2. 为方便起见,选择所有时间/样本的能力。
  3. 时间范围的集合。
  4. 能够在特定时间/样本中“点击测试”选择性。
  5. 如果您有wave数据的API / POCO,您可以在其上实现通用或访问者模式以获得所需的功能。我不确定我是否知道.net框架中的通用“样本范围”项目。

    但是,作为示例,您可以查看Building a Generic Range class处的代码示例,看看是否可以使用它。我不完全确定我同意他的一些操作员超载,但它可能是你开始的地方。