-1

私は 2 つのテキスト ボックスを持っており、そこからデータを収集しようとしています。私はそれらをループしていますが、プログラムがそれらからデータを収集しようとしていて、値がない場合、それらは空であり、「入力文字列が正しい形式ではありませんでした」という形式の例外が発生します。

if (this.Controls["txt_db0" + count].Text != null)
 {
   //if the value in the textbox is not null
   int db = int.Parse((this.Controls["txt_db0" + count].Text));
   //set my "db" integer to the value of the textbox.
 }

if ステートメントをそこに置いて、値がない場合は除外します。フォーマット例外が発生しても、何か間違ったことをしているに違いありません。

4

2 に答える 2

1

あなたの仕事をチェックするには、これを行うことができます

int testInt;
if (int.TryParse(this.Controls["txt_db0" + count].Text,out testInt))
{
  //if the value in the textbox is not null
  int db = testInt;
  //set my "db" integer to the value of the textbox.
}
else
  MessageBox.Show(this.Controls["txt_db0" + count].Text + "  Not an Int");
于 2013-04-29T15:34:09.350 に答える
0

次の場合、int.Parse は例外をスローします。

  • 入力文字列に、数字として認識できない文字またはその他の特殊文字が含まれています。
  • 入力文字列は空の文字列です。

入力文字列に数字のみが含まれていることが確実な場合は、変換する前にまず文字列が空かどうかを確認してください。

string input = this.Controls["txt_db0" + count].Text;
int db = input == "" ? 0 : int.Parse(input);

または、次を使用できます。

int db;
if (!int.TryParse(this.Controls["txt_db0" + count].Text, out db))
     // Do something else.
于 2013-04-29T15:36:12.343 に答える