0

ブラウザコンポーネントをコンボボックスで選択した値に移動しようとすると、問題が発生します。コンボボックスの値が変更された場合です。

以下のように実行すると正常に動作します(ただし、combobox2が変更されても起動されません)。

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string[] filePaths = Directory.GetFiles(sites.paths[comboBox1.SelectedIndex]);

        List<Foo> combo2data = new List<Foo>();

        foreach (string s in filePaths)
        {
            Foo fileInsert = new Foo();
            fileInsert.path = s;
            fileInsert.name = Path.GetFileName(s);
            combo2data.Add(fileInsert);
        }

        comboBox2.DataSource = combo2data;
        comboBox2.ValueMember = "path";
        comboBox2.DisplayMember = "name";         

        this.webBrowser1.Navigate((string)comboBox2.SelectedValue); // THE MOST IMPORTANT LINE : )
    }

しかし、次のような場合に例外が発生します(App1.Foo型のオブジェクトをSystem.String型にキャストできません)。

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string[] filePaths = Directory.GetFiles(sites.paths[comboBox1.SelectedIndex]);

        List<Foo> combo2data = new List<Foo>();

        foreach (string s in filePaths)
        {
            Foo fileInsert = new Foo();
            fileInsert.path = s;
            fileInsert.name = Path.GetFileName(s);
            combo2data.Add(fileInsert);
        }

        comboBox2.DataSource = combo2data;
        comboBox2.ValueMember = "path";
        comboBox2.DisplayMember = "name";

    }

    private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
         this.webBrowser1.Navigate((string)comboBox2.SelectedValue);
    }
4

2 に答える 2

0

パスの前にfile:///のようなものを追加する必要があると思います

しかし、あなたが考慮すべきことがもっとあります

HTTP(S)を介して取得されたページ上のローカルファイルへのリンクは、セキュリティリスクになる可能性があり、過去に攻撃で使用されたことがあるため、Mozilla/Firefoxでは意図的に無効にされています。

http://kb.mozillazine.org/Firefox_:問題:_Links_to_Local_Pages_Don%27t_Work

于 2012-07-18T11:06:04.603 に答える
0

これから行の順序を変更してみてください:

    comboBox2.DataSource = combo2data; 
    comboBox2.ValueMember = "path"; 
    comboBox2.DisplayMember = "name"; 

これに:

    comboBox2.DisplayMember = "name";
    comboBox2.ValueMember = "path";
    comboBox2.DataSource = combo2data;

次に、コード:

  (string)comboBox2.SelectedValue

パスの値である正しい結果が得られます

于 2012-07-18T11:30:25.957 に答える