0

我的表单中有一个 numericupdown 并将其最大值设置为 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);
    }
}
4

2 回答 2

0

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

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

请记住NumericUpDown只有当您离开控制或使用箭头键更改值时,才会更改实际值。当您输入文本时,值不会改变,直到焦点离开旋转框。

验证您为哪个控件设置了最大值, NumericUpDown仅当输入的值超过Maximum该特定实例Minimum的值时才会自动更改其值。因此,很明显您的控件已设置为. 可能您更改了其他一些控件的最大值。Maximum100

于 2012-11-10T14:49:28.470 回答
0

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

<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"/>

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

干杯...

于 2013-12-08T13:46:08.583 回答