0

関連するイベント ハンドラーのコードは次のとおりです。

private void textBox1_TextChanged(object sender, EventArgs e)
        {
            try
            {
                seed = Convert.ToInt32(this.Text);
            }
            catch (FormatException)
            {
                MessageBox.Show("Input string is not a sequence of digits.");
            }
            catch (OverflowException)
            {
                MessageBox.Show("The number cannot fit in an Int32.");
            }

        }

ユーザーがテキストボックスに許可されている数値以外を入力しないようにすることになっていますInt32が、ボックスに何かを入力しようとするたびに最初のcatchステートメントが実行されます。いろいろ調べたのですが原因がわかりません...

4

3 に答える 3

5

おそらくthis.Text、入力ボックスからではなく、ハンドラーが定義されているクラスから読み取るためです。

あなたが望むものは次のとおりだと思います:

try
{
    seed = Convert.ToInt32(((TextBox)caller).Text);
}
于 2013-01-10T21:12:52.400 に答える
0

以下を使用して、エラーメッセージを確認すると役立つ場合があります(もちろん一時的に)。

catch (FormatException exception)
{

    MessageBox.Show("Input string is not a sequence of digits."
                    + "Exception message was: " + exception.getMessage());
}
于 2013-01-10T21:35:43.630 に答える
0
private void textBox1_TextChanged(object sender, EventArgs e)
        {
            try
            {
                seed = Convert.ToInt32(textBox1.text);
            }
            catch (FormatException)
            {
                MessageBox.Show("Input string is not a sequence of digits.");
            }
            catch (OverflowException)
            {
                MessageBox.Show("The number cannot fit in an Int32.");
            }

        }

上記のステートメントを使用してください。正しく機能するはずです。数値を入力すると、最初の例外は実行されません。

于 2013-01-10T21:14:45.377 に答える