我打算在winform应用程序中使用的NumericUpDown控件中实现以下行为。
当我们单击NumericUpDown控件的向下箭头键时,控件的值会减小,并且在随后的单击中,其值继续减小,直到达到最小值。之后,该值保持不变,以便进一步单击向下箭头键。对于单击NumericUpDown控件的向上箭头键,相反的行为也是如此,即在达到最大值之后,该值保持不变,以进一步单击控件的向上箭头。
我正在尝试实现以下行为:
达到最大值后,如果用户点击向上箭头键,则该值设置为控件的最小值。
达到最小值后,如果用户点击箭头键,则该值设置为控件的最大值。
答案 0 :(得分:3)
对于NumericUpDown
控制,这不是一个好的行为,但如果你想这样做,
您可以从NumericUpDown
继承并覆盖UpButton()
并DownButton()
喜欢这个
public override void UpButton()
{
if (Value == Maximum)
Value = Minimum;
else
base.UpButton();
}
public override void DownButton()
{
if (Value == Minimum)
Value = Maximum;
else
base.DownButton();
}
并使用该继承的控件而不是NumericUpDown
。
答案 1 :(得分:2)
如果你可以免除Tag
,你可以这样做:
private void numericUpDown1_Click(object sender, EventArgs e)
{
decimal old = numericUpDown1.Value;
if (numericUpDown1.Tag != null) old = (decimal)numericUpDown1.Tag;
if (old == numericUpDown1.Value && old == numericUpDown1.Maximum)
numericUpDown1.Value = numericUpDown1.Minimum;
else if (old == numericUpDown1.Value && old == numericUpDown1.Minimum)
numericUpDown1.Value = numericUpDown1.Maximum;
numericUpDown1.Tag = numericUpDown1.Value;
}
(更新了错误的旧答案)