0

リストボックスを使用して Web ページを閲覧しようとしています。3 つのリンクを追加しました。3 つのリンクはすべて正常に読み込まれていますが、3 つ目のリンクの読み込みが完了すると、この例外が発生しました。

例外は次のとおりです。

InvelidArguement = value of '3' is not valid for 'SelectedIndex'. Parameter name:
 SelectedIndex

警告は次のとおりです。

`The result of the exception is always 'true' since a value of type 'int' is
  never equal to 'null' of type 'int?'

これは私のプログラムイメージです:

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

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;

    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
        InitializeComponent();
        listBox1.Items.Add("www.google.com");
        listBox1.Items.Add("www.facebook.com");
        listBox1.Items.Add("www.yahoo.com");
        listBox1.SelectedIndex = 0;
        listBox1.DataSource = listBox1.Items;

    }

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        do
        {
        webBrowser1.Navigate(listBox1.SelectedItem.ToString());
        while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
        {
            Application.DoEvents();
            if(webBrowser1.ReadyState == WebBrowserReadyState.Complete)
            {
                listBox1.SelectedIndex = listBox1.SelectedIndex+1;
            }
        }
        } while (listBox1.SelectedIndex != null);
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }
}
}
4

1 に答える 1

1

ここでのこのステートメントは問題を引き起こしています。選択したインデックス (この例では 0 - 2) が 3 に達すると、利用可能な 3 のインデックスがないため、例外がスローされます。

listBox1.SelectedIndex = listBox1.SelectedIndex+1;

SelectedIndex は null を返すことのできない整数を返すため、ループも終了しません。新しいインデックス整数を使用する代わりに、長さをチェックするようにコードを変更する必要があります。カウントは常にインデックスよりも 1 つ大きい値を返すことに注意してください (カウントは 1 から始まり、インデックスは 0 から始まります)。

于 2012-08-17T21:10:23.107 に答える