【问题标题】:Is there a C#/.NET control that coerces to min, max, and increment values?是否有强制最小值、最大值和增量值的 C#/.NET 控件?
【发布时间】: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


【解决方案1】:

您可以尝试使用TrackBar control。

您可以指定步长和范围。

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

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

【讨论】:

  • 这样可以,但我的计划是把这个控件放在一个DataGridViewCell中,我觉得它看起来很别扭。
  • 用户从 64K 值中选择一个值会非常尴尬,而不是通过键入或粗/细控制对。
  • 我同意。我想我只需要实现我自己的 NumericUpDown 控件,该控件强制为增量值。应该不难:)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多