我正在编写一个仪器控制器,用户需要在其中输入特定仪器参数的值。一个这样的参数是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 类以提供我想要的。谢谢您的帮助!