-1

Web ページのリローダーを作成していて、ユーザーからの入力を使用してリロードの数を取得しようとしていますが、ユーザーからの入力の数を取得できません。

でユーザー入力を取得しようとしていますtextBox2.Textが、次のエラーが発生しています:

input string was not in a currect format

このエラーはこの行にありますkkk = System.Int32.Parse(textBox2.Text);

値にユーザー入力を適切に取得する方法を教えてくださいint

これは私のプログラムコードです:

public partial class Form1 : Form
{
    public  int kkk;

    public Form1()
    {
        InitializeComponent();
    }

    private void progressBar1_Click(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (progressBar1.Value != kkk)
        {
            do
            {
                try
                {
                    webBrowser1.Navigate(textBox1.Text);
                    while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
                    {
                        Application.DoEvents();
                        if(webBrowser1.ReadyState == WebBrowserReadyState.Complete)
                        {
                            progressBar1.Value = progressBar1.Value + 1;
                        }
                    }
                    MessageBox.Show("Loaded");
                }
                catch(Exception)
                {
                    MessageBox.Show("failed");
                }
            }
            while(progressBar1.Value !=kkk);
        }   
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        kkk = System.Int32.Parse(textBox2.Text);
        progressBar1.Maximum = kkk;        
    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {

}
4

2 に答える 2

0

この線:

kkk = System.Int32.Parse(textBox2.Text);

整数に解析できない空の文字列であるため、エラーが発生している可能性があります。次のように変更します。

kkk = textBox2.Text.Trim();
if( kkk.Length > 0 ) {
    try {
        kkk = System.Int32.Parse(kkk);
    }
    catch { }
}
于 2012-08-07T18:23:23.177 に答える
0

フォーム ロード イベントでは、textbox2 の内容を取得します。text を入力して kkk に割り当てます。しかし、その時点で textBox2 内には何もないため、エラーがスローされます。当然のことながら、テキストボックスが空であるため、値がない場合、どのように Int32 に解析できますか?

kkkプロセス中に後で値を割り当てる必要があります。例外が発生する前に、いつでも例外を処理できます。

  int number;
  bool result = Int32.TryParse(txtBox2.Text, out number);
  if (result)
  {
    //good conversion you can use number
  }
  else
  {
    //not so good
  }

しかし、フォームの読み込みイベントでこれを行っていますが、読み込みイベントが終了するまでに、コードに基づいてそのテキストボックスに何かがあるとは思えません。

于 2012-08-07T18:16:12.910 に答える