none
WebBrowser 控制項 切換網址瀏覽 RRS feed

  • 問題

  • public partial class Form1 : Form
    {
        Form IE;
        WebBrowser wb;
        public Form1()
        {
            InitializeComponent();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            if (IE == null)
            {
                IE = new Form();
                IE.Width = 1024;
                IE.Height = 768;
                WebBrowser wb = new WebBrowser();
                wb.Location = new Point(0, 0);
                wb.Width = 1020;
                wb.Height = 768;
                IE.Controls.Add(wb);
                IE.Show();
                wb.Navigate("http://www.yahoo.com.tw");
                IE.FormClosing += (o, s) => { s.Cancel = true; IE.Hide(); };//改變關閉行為成隱藏
            }
        }
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (IE != null)
            {
                wb.Navigate(listBox1.Items[listBox1.SelectedIndex].ToString());//錯誤NullReferenceException
                IE.Visible = true;
            }
        }
    }
    請教我想開啟一個子表單,網址清單在父表單中的listbox,如何利用listbox的事件讓子表單的瀏覽器執行瀏覽?
    2010年3月16日 下午 05:55

解答

  •             if (IE == null)
                {       
                    WebBrowser wb = new WebBrowser();
                    wb.Name = "wb";
                }
    
            private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
            {            
                foreach (Control ctl in IE.Controls)
                {            
                    if (ctl.Name == "wb")
                    {
                        WebBrowser w2 = (WebBrowser)ctl;
                        w2.Navigate(listBox1.Items[listBox1.SelectedIndex].ToString());
                        IE.Visible = true;
                    }                        
                }                   
            }

    • 已標示為解答 kuoma 2010年3月17日 上午 05:46
    2010年3月17日 上午 05:00

所有回覆

  • hi
    嘗試看看
     private void listBox1_SelectedIndexChanged( object sender, EventArgs e )
            {
                String currenURI=listBox1.SelectedItem.ToString();
                webBrowser1.Navigate( currenURI );
            }
    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2010年3月16日 下午 11:41
  • ricoisme您好

    我是利用button2開啟另一個表單,此表單裡面含有WebBrowser控件

    而利用button2的表單裡面的listBox1_SelectedIndexChanged去瀏覽這一個新開的表單

    您現在的做法跟我的應該是寫的是一樣的吧!?

    2010年3月17日 上午 01:31
  • 那可以參考既有討論
    form1 輸入 & form2 顯示的問題


    http://www.dotblogs.com.tw/ricochen/Default.aspx
    • 已編輯 ricoisme 2010年3月17日 上午 02:54 修改連結
    2010年3月17日 上午 01:41
  • C#跨表單傳值可以參考以下:
    http://social.msdn.microsoft.com/Forums/zh-TW/233/thread/4c3c392d-c43f-4d19-b15a-fbab767c6031
    http://social.msdn.microsoft.com/Forums/zh-TW/803/thread/7afd6caf-b032-4ac3-9a0f-d154b1be7643
    http://social.msdn.microsoft.com/Forums/zh-TW/230/thread/ee65e0f2-36f8-4d52-af2a-1acc65806027

    還有蹂躪大的Blog針對這問題寫過一篇
    http://www.dotblogs.com.tw/larrynung/archive/2009/03/24/7669.aspx


    MSDN 文件庫很重要
    問題本身越具體, 越容易得到大家的回應
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    2010年3月17日 上午 02:58
    版主
  •             if (IE == null)
                {       
                    WebBrowser wb = new WebBrowser();
                    wb.Name = "wb";
                }
    
            private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
            {            
                foreach (Control ctl in IE.Controls)
                {            
                    if (ctl.Name == "wb")
                    {
                        WebBrowser w2 = (WebBrowser)ctl;
                        w2.Navigate(listBox1.Items[listBox1.SelectedIndex].ToString());
                        IE.Visible = true;
                    }                        
                }                   
            }

    • 已標示為解答 kuoma 2010年3月17日 上午 05:46
    2010年3月17日 上午 05:00
  •     public partial class Form1 : Form
        {
            Form IE;
            WebBrowser wb;
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                if (IE == null)
                {
                    IE = new Form();
                    IE.Width = 1024;
                    IE.Height = 768;
                    WebBrowser wb = new WebBrowser();
                    wb.Name = "wb";
                    wb.Location = new Point(0, 0);
                    wb.Width = 1020;
                    wb.Height = 768;
                    IE.Controls.Add(wb);
                    IE.Show();
                    wb.Navigate("http://www.yahoo.com.tw");
                    IE.FormClosing += (o, s) => { s.Cancel = true; IE.Hide(); };//改變關閉行為成隱藏
                }
            }
            private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                if (IE != null)
                {
                    foreach (Control ctl in IE.Controls)
                    {
                        if (ctl.Name == "wb")
                        {
                            WebBrowser w2 = (WebBrowser)ctl;
                            w2.Navigate(listBox1.Items[listBox1.SelectedIndex].ToString());
                            IE.Visible = true;
                        }
                    }
                }
            }
        }
    感謝Joe Hung 大大我就是要這效果 雖然看了前幾位貼的但我還是寫不出來功力不夠。<abbr class="affil" />
    2010年3月17日 上午 05:46