0

フォームに数値アップダウンがあり、その最大値を 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と type6がある場合は、 が取得されます65。すべてのテキストが選択される場合、選択された値5は新しい値に置き換えられます6

値を最大値にリセットすることは、デフォルトのNumericUpDownコントロール動作です。入力した数値が許可された最大値を超えた場合、NumericUpDownコントロールを離れると、その値は許可された最大値に置き換えられます。

の実際の値は、NumericUpDownコントロールを離れるか、矢印キーを使用して値を変更した場合にのみ変更されることに注意してくださいテキストを入力すると、フォーカスがスピン ボックスを離れるまで値は変更されません。

入力した値がその特定のインスタンスの値NumericUpDownを超えた場合にのみ、最大値が自動的に値を変更するMaximumコントロールを確認します。したがって、コントロールが に設定されていることは明らかです。他のコントロールの最大値を変更した可能性があります。MinimumMaximum100

于 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 に答える