关于WMobile中WebBrowser控件存在的问题(C#)

本文探讨了在使用WebBrowser控件过程中遇到的问题,包括重复打开窗体导致程序崩溃及URL中的“+”号被替换为空格的现象,并提供了具体的解决方案。

我所做的工程需要用到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

         第2次:webBrowser1.Navigate(new Uri("http://xxx.xxx.xxx.xxx:8080/aabb/ab&method=aa%2Bbb"));
          结果 :服务器收到
method=aa bb

          第3次:webBrowser1.Navigate(new Uri("http://xxx.xxx.xxx.xxx:8080/aabb/ab&method=aa%252Bbb"));
          结果 :服务器收到
method=aa%2Bbb

没办法了,客户端这边传什么过去,服务器也收不到"+"加号,所以就把"+"加号,变为"%252B",发送到服务器那边后,服务器(java写的)就用url.decode();把 aa%2Bbb  解编码为 aa+bb .这样,效果勉强达到了.

如果大家也遇到了同样问题,而且有好的解决办法,希望留言,谢谢~
(注意:这里说的是WMobile手机里的WebBorwser控件.)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值