【发布时间】:2013-03-07 08:52:44
【问题描述】:
我正在对仪器控制器进行编程,用户需要在其中输入特定仪器参数的值。一个这样的参数是Number of Samples。我需要根据指定的最小值、最大值和增量来限制用户输入:
Min: 32
Inc: 32
Max: 2097120
因此,它可能的值是:
32, 64, 96, 128, 160, ..., 2097120
我曾考虑过使用ComboBox,但有这么多项目不仅加载列表会很慢,而且用户在如此大的列表中选择一个值也会令人沮丧。
我也考虑过使用NumericUpDown,但Increment 参数仅控制按下向上或向下箭头时应用的增量。控件的值不会强制为指定的增量。例如,如果我输入 38,它应该强制转换为最接近的可能值,即 32。如果我输入 58,它应该强制转换为 64。
是否有一个控件可以让我做我想做的事?还是我必须从NumericUpDown 继承并处理值更改事件以强制值?也许有一个特殊的ComboBox 实现,它只加载列表的一部分并在用户滚动时继续加载其余部分,这样他们就不必等待整个列表加载多长时间?
谢谢。
编辑:我将扩展 NumericUpDown 类以提供我想要的。感谢您的帮助!
【问题讨论】:
-
为什么不自己实现呢?
-
也许是一个轨迹栏? msdn.microsoft.com/en-us/library/…
-
@AshBurlaczenko 我想看看是否有一些我还没有发现的属性或控件可以让我在去实现自己的之前先执行此操作。我知道这很容易,但如果我不需要,我不想做这项工作;)
-
您最好的选择(根据您的 cmets 判断另一个答案是扩展 numericupdown 控制。
标签: c# combobox increment numericupdown coercion