我所做的工程需要用到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控件.)
本文探讨了在使用WebBrowser控件过程中遇到的问题,包括重复打开窗体导致程序崩溃及URL中的“+”号被替换为空格的现象,并提供了具体的解决方案。
3384

被折叠的 条评论
为什么被折叠?



