numericupdown自动重置为100

时间:2012-11-10 13:09:20

标签: c# .net winforms

我的表格中有一个数字版本,并将其最大值设置为2000,但每当我键入一个大于100的数字并保留值时,值会自动重置为100?我尝试使用此代码来纠正错误但行为不正确。

private void answer_Enter(object sender, EventArgs e)
{
    // Select the whole answer in the NumericUpDown control.
    NumericUpDown answerBox = sender as NumericUpDown;

    if (answerBox != null)
    {
        int lengthOfAnswer = answerBox.Value.ToString().Length;
        answerBox.Select(0, lengthOfAnswer);
    }
}

2 个答案:

答案 0 :(得分:1)

我还没有对此进行全面分析,但在使用此代码时遇到了类似的问题:

<wf:NumericUpDown x:Name="NumericKernalSize"  Width="50" Height="22" Visible="True" ValueChanged="NumericKernalSize_ValueChanged" BorderStyle="FixedSingle" Value="201" Minimum="0" Maximum="1000" />

发生的事情是,在将最大值设置为所需的最大值1000之前,值= 201似乎超过了默认最大值100。

如果在值之前设置最大值,则不会出现问题,例如以下对我有用: -

<wf:NumericUpDown x:Name="NumericKernalSize"  Width="50" Height="22" Visible="True" ValueChanged="NumericKernalSize_ValueChanged" BorderStyle="FixedSingle" Minimum="0" Maximum="1000" Value="201"/>

希望这对某人有所帮助,因为抓住这个问题很棘手......

干杯...

答案 1 :(得分:0)

此代码选择NumericUpDown控件的旋转框中的所有文本。为什么?因为当您使用Tab将控件导航到NumericUpDown时,将不会选择文本并且输入将从第一个位置开始。因此,如果您已有值5并输入6,那么您将获得65。如果选择了所有文字,则选定的值5将替换为新值6

将值重置为最大值是默认的NumericUpDown控件行为。如果输入的数字超过允许的最大值,那么当您离开NumericUpDown控件时,它的值将替换为允许的最大值。

请记住,仅当您离开控件或使用箭头键更改值时,NumericUpDown的实际值才会更改。当您输入文本时,在焦点离开旋转框之前,值不会改变。

确定您设置的最大值 仅当输入的值超过{em>该特定实例的NumericUpDownMaximum值时,Minimum才会自动更改其值。因此,您的控件显然已将Maximum设置为100。可能你改变了其他一些控件的最大值。