0

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

4

2 回答 2

0

正如@FelicePollano 建议的那样,轨迹栏听起来像是您想要的东西。您可以创建一个跟踪栏以跟上实际值但使其不可见,然后允许用户通过按钮(或您想要的任何其他内容)与其交互,这些按钮只需通过其小或大的增量属性来增加跟踪栏的值。

于 2013-03-18T20:56:35.327 回答
0

您可以尝试使用TrackBar 控件

您可以指定步长和范围。

但是您将有 64K 个单独的步骤。用户将无法准确选择。您可以有两个滑块,一个用于粗略控制,一个用于精细控制。

或者你可以让他们输入数字,然后除以 32,然后再乘以 32。

于 2013-03-18T20:52:48.697 回答