2012-07-16 74 views
0

有没有提供基本选择机制的任何类?例如:提供“选择”的类

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

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

Ofcourse Ishould可以选择范围块:

ms.Select (from, to); 

甚至反转:

ms.InvertSelection(); 

多选择:

ms.AppendSelection (from ,to); 

约所选样品获取信息:

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

那么,那个班已经写了吗,还是应该我明天去做呢?

Thx。

+0

从你的用户界面中分离你的逻辑。没有“Select”类或“ISelected”接口,因为可以选择的UI元素将处理他们自己的选择。然后你可以检索ListBox。SelectedItems()'并且在这个列表上工作。 – CodeCaster 2012-07-16 15:09:43

回答

1

我已经无法找到任何“官方”(内置框架)班隐约匹配你的描述,但我发现this article这将有助于你对你的方式 - 我看不到的相当于你的InvertSelection()方法,但除此之外它看起来很有前途。

编辑:在进一步的搜索,我发现乔恩斯基特对在他的书C#深入创建通用范围类的一章 - 看到他的网站上here它的提取物。

1

我不知道框架中的任何事情,只有这一点。这似乎是一个高度依赖于你想如何跟踪选择(Selected属性,索引范围)的东西。

1

你已经写了多少本课?正因为如此,我看到你描述

  1. 一组两个数字(多头,也许?)来定义一个时间范围或样本的选择。
  2. 能够选择所有时间/样本作为方便。
  3. 时间范围的集合。
  4. “击中测试”给定时间/样本选择的能力。

如果您的wave数据有API/POCO,那么可以在其上实现通用或访问者模式以获得所需的功能。我不确定我知道.net框架中的通用“样本范围”项目。作为一个例子,你可以看一下代码示例Building a Generic Range class,看看你是否可以使用它。我不完全相信我同意他的一些运营商超载,但它可能是你开始的地方。