C#中显示后缀为.HTM帮助文件,用户要求使用windos默认浏览器(firefox),帮助文件地址里有特殊符号文件不能显示。请问怎样显示这些文件。
我使用的方法是:Help.ShowHelp(this,".\\test.htm")  这样是能显示首页的。
如果使用方法是:Help.ShowHelp(this,".\\test.htm#1000") 这样不能显示出帮助文件的定位页面,原因是firefox不能认识“#”(申明如果用IE是能打开".\\test.htm#1000"这个文件的)请问怎样让firefox打开这个文件

解决方案 »

  1.   

    写信给万恶的微软开发组或者给伟大的Mozilla开发组...要求他们兼容...或者...等待下一个版本并祈祷...
      

  2.   

    除了使用Help.ShowHelp()方法还有没有其他的方法?
    我以前用过WebBrowser _Web= new WebBrowser();
             _Web.Navigate(".\\test.htm#1000",true);
    这样输出是没问题的但只能已IE的形式表现出来,但我的客户要求使用windows默认的方式显示(客户可能用firefox等浏览器)。
      

  3.   

    我在命令行下
    这样就能打开
    firefox "file:///C:/Documents%20and%20Settings/hwp/%E6%A1%8C%E9%9D%A2/regex.html#matchingandsearching"要不你用ShellExecute或者ShellExecuteEx这两个api完成吧。PS我的firefox是刚装的3.0不知道以前版本如何。
      

  4.   

    先谢谢akirya!
    问题是用户默认的浏览器不一定是fireFox 如果是其他的浏览器
    我怎样得到它运行的程序,这些程序是否可以这样使用参数。Help.ShowHelp()这个方法能够调用默认的浏览器。
    只不过使用".\\test.htm#1000" 这种地址后。在firefox地址框显示的是,"file:///c:/test.htm%231000"这样firefox就不能找到test.htm这个文件了。 
      

  5.   

    使用了shellExecute()效果和help.showhelp差不多 把"#"改成%23 浏览器找不到文件
      

  6.   

    ShellExecute这个api 第二个参数使用"open" 然后参数是url的话,就会使用默认的浏览器,不管是ie 
    firefox还是火星浏览器。
      

  7.   

    ShellExecute(Pant.Handle.ToInt32(), "open", url, string.Empty, string.Empty, 5);
    我这样试了。还是找不到文件。在网页上出的错误。
    url = “c:\\test.htm#1000”;
      

  8.   

    akirya 你这样做文件读出来了吗?看看语句对不对
      

  9.   

    查看看FireFox的文件定位是怎么定的
      

  10.   

    第三个参数留空,第四个参数填url 
      

  11.   

    谢谢 akirya 根据你提供的方法返回代码为33 ,还是不能显示。不过根据你的提示我解决问题。
    我采用外部执行的方式解决的问题。
                Process p = new Process();
                p.StartInfo.FileName = GetIERunString();
                string c = url;
                p.StartInfo.Arguments = c;
                p.Start();GetIERunString()函数是从注册表里获取 IE的执行路径            string IEString = string.Empty;
                RegistryKey regKey = Registry.ClassesRoot;
                regKey = regKey.OpenSubKey(@"http\shell\open\command");
                IEString = regKey.GetValue("").ToString();
                string a = IEString;
                string[] b;
                b = a.Split(new char[1] { '"' });
                IEString = b[1];
                return IEString;