Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF WebBrowser-内置搜索对话框不';如果内容加载了NavigateToString,则无法工作_C#_Xml_Wpf_Navigation_Webbrowser Control - Fatal编程技术网

C# WPF WebBrowser-内置搜索对话框不';如果内容加载了NavigateToString,则无法工作

C# WPF WebBrowser-内置搜索对话框不';如果内容加载了NavigateToString,则无法工作,c#,xml,wpf,navigation,webbrowser-control,C#,Xml,Wpf,Navigation,Webbrowser Control,我使用WebBrowser显示生成的XML。通过调用NavigateToString将我的XML字符串加载到浏览器中: var text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + Environment.NewLine + "<whatever/>"; Browser.NavigateToString(text); var text=“” +环境新线 + ""; Browser

我使用WebBrowser显示生成的XML。通过调用NavigateToString将我的XML字符串加载到浏览器中:

var text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
         + Environment.NewLine
         + "<whatever/>";
Browser.NavigateToString(text);
var text=“”
+环境新线
+ "";
Browser.NavigateToString(文本);
浏览器加载字符串内容后,我尝试使用标准的Ctrl+F搜索对话框搜索任何显示的文本,但它总是显示警告“未找到匹配项”

如果我将XML字符串保存到文件中并使用Browser.Navigate(文件名),它会工作


有什么想法吗?

当您导航到一个文件时,
WebBrowser
控件执行MIME类型嗅探(通常使用文件扩展名作为提示)。然后创建相应类型的对象。它通常是的实例,但也可以是XML、PDF或Word文档,所有这些都支持活动文档接口

现在,当您使用
NavigateToString
导航到字符串时,
WebBrowser
不会尝试识别文档类型,只创建MSHTML文档(而不是XML文档)的实例,然后尝试将内容解析为HTML,但失败了

我认为使用
NavigateToString
无法获得所需的行为,我相信这同样适用于
NavigateToStream
。为了说明发生了什么,请将XML内容保存为
filename.html
filename.txt
filename.XML
。尝试用IE打开每个文件

另一方面,当您导航到URL时,服务器实际上有一个使用HTTP头建议MIME类型的选项。浏览器可能会也可能不会容忍此类建议(它仍将执行一些验证检查)


底线:您将无法使用
导航字符串
导航流
呈现XML。您必须首先将其转换为HTML(例如,使用XSLT转换)

我也有同样的问题。 甚至可以使用重载直接打开xml文件:

webbrowser.Navigate(string filepathToXML)

这样一来,内置的搜索面板就像一个魔咒

使用
StringBuilder
类而不是串联字符串,不确定这是否能解决问题,但值得一试。如果将字符串包装在html标记中,
Browser.NavigateToString(string.Format(“{0}”,text))
@Tico感谢StringBuilder的提示,但在这里我试图使示例代码非常简单,以吸引对NavigateToString方法的注意。@Tico使用StringBuilder显然无法解决此问题。您可能还想查看MSDN类文档的备注部分,了解它的用法何时合适,何时不合适。如果您阅读了我的备注,您会发现我并没有建议它可以解决问题。字符串连接不合适,是吗?。。