1. 程式人生 > >關於WMobile中WebBrowser控制元件存在的問題(C#)

關於WMobile中WebBrowser控制元件存在的問題(C#)

我所做的工程需要用到WebBrowser這個控制元件,不過在使用的過程中發現了它有點問題,工程是這樣的:

  

按下Form1中的FrmWB1按鈕,開啟FrmWB1,其中FrmWB1中是有WebBrowser控制元件.

問題1:

當我關閉了窗體FrmWB1時, 再按下Form1中的FrmWB1按鈕,程式就自動退出了,按鈕FrmWB1的程式碼是:
FrmWB1 fwb=new FrmWB1();
fwb.show();
為什麼會造成 新建同一個帶有WebBrowser控制元件的窗體對像時,程式會崩潰呢?
原因呢,我也不太會表達,可能是窗體FrmWB1在close時,WebBrowser這個控制元件還在FrmWB1中,所以,在FrmWB1的
Closing()這個方法裡,新增一句:  this.Controls.Clear();  問題就可以解決了.  具體程式碼:

    public partial class Form1 : Form
    {
        FrmWB1 fwb1;
        public Form1()
        {
            InitializeComponent();
        }

        private void butToFrmWB1_Click(object sender, EventArgs e)
        {
            if (fwb1 != null)
            {
                fwb1 = null;
            }
            fwb1 = new FrmWB1();
            fwb1.Show();
            fwb1.go();                            //開啟一個url
        }

        private void menuItemExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

    public partial class FrmWB1 : Form
    {

        public FrmWB1()
        {
            InitializeComponent();
        }

        public void go()
        {
            webBrowser1.Navigate(new Uri("http://wap.baidu.com"));
        }

        private void FrmWB1_Closing(object sender, CancelEventArgs e)
        {
            this.Controls.Clear();     //<--------這句
        }

        private void menuItemCloseMe_Click(object sender, EventArgs e)
        {
            Close();
        }

問題2:
          在WebBrowser控制元件中的URL屬性裡,填上帶有"+"加號的URL,傳到伺服器時會變成"空格".網上很多也是寫:把
"+"加號,編碼,變為"%2B"就可以了.但是,在POST等方法有用,在WebBrowser控制元件裡沒用,無論是"+"加號,還是"%2B"
傳到伺服器上,還是變為" "空格.....原因呢,我還不明白,不過解決辦法還是有的.
          就是把"+"加號的地方,變為"%252B",也就是把"+"加號進行了兩次是編碼."+"->"%2B"->"%252B".
為什麼會這樣做呢,我的測試是這樣的:
我要傳送:"aa+bb"這個引數過伺服器.
         第1次:webBrowser1.Navigate(new Uri("http://xxx.xxx.xxx.xxx:8080/aabb/ab&method=aa+bb"));
          結果 :伺服器收到 method=aa bb

沒辦法了,客戶端這邊傳什麼過去,伺服器也收不到"+"加號,所以就把"+"加號,變為"%252B",傳送到伺服器那邊後,伺服器(java寫的)就用url.decode();把 aa%2Bbb  解編碼為 aa+bb .這樣,效果勉強達到了.

如果大家也遇到了同樣問題,而且有好的解決辦法,希望留言,謝謝~
(注意:這裡說的是WMobile手機裡的WebBorwser控制元件.)