C# 使用C在WebBrowser中单击超链接时如何运行进程#

C# 使用C在WebBrowser中单击超链接时如何运行进程#,c#,asp.net,C#,Asp.net,我想在单击超链接后打开PDF文件。我试图添加一个href标记,但与WebBrowser不兼容。此外,如果这是不可能的,是否有工具箱可供更换 private void btSearch\u单击(对象发送者,事件参数e) { this.webBro.DocumentText=initDoc(); MessageBox.Show(“已完成”,“已完成”,MessageBoxButtons.OK,MessageBoxIcon.Information); } 私有字符串GetBodyText() {

我想在单击超链接后打开PDF文件。我试图添加一个
href
标记,但与WebBrowser不兼容。此外,如果这是不可能的,是否有工具箱可供更换


private void btSearch\u单击(对象发送者,事件参数e)
{
this.webBro.DocumentText=initDoc();
MessageBox.Show(“已完成”,“已完成”,MessageBoxButtons.OK,MessageBoxIcon.Information);
}
私有字符串GetBodyText()
{
StringBuilder strB=新的StringBuilder();
string[]filepath=Directory.GetFiles(@“C:\Users\huydq\Downloads\Documents\”、“*.pdf”、SearchOption.AllDirectories);
for(int i=0;i=0)
{
字符串foundText=settext.Substring(索引,searchText.Length);
int contextStart=Math.Max(0,索引-前缀);
int contextLength=Math.Min(settext.Length-contextStart,searchText.Length+前缀+后缀);
字符串contextText=settext.Substring(contextStart,contextLength);
stringfiles=Path.GetFileName(filepath[i]);
MessageBox.Show(contextText);
strB.AppendFormat(“
{2}

”,文件路径[i],文件,上下文文本); } } 返回strB.ToString(); } 私有字符串initDoc() { StringBuilder sb=新的StringBuilder(); 某人附加(@) "); sb.Append(string.Format(@“{0}”,“查看文档”); 某人加上(“”); 某人加上(“”); sb.Append(GetBodyText()); 某人加上(“”); 某人加上(@“); 使某人返回字符串(); }
这应该行得通。
系统.Diagnostics.Process.Start(文件路径)

您不应该考虑启动什么应用程序。只需指定一个URI,系统就会为您打开一个PDF查看器


Process.Start(新的ProcessStartInfo(/*绝对URI*/)

尝试更改pdf文件的链接,如下所示:

<a href="file:///C:/myFolder/myfile.pdf">Click Here</a>

有关详细信息,请单击

编辑 如果要处理超链接,请单击超链接并将PDF作为单独的进程运行:

    void Form_Load()
    {
        webBrowser1.DocumentText = "<html><body><a href=\"D:\\test.pdf\">Click Me!</a></body></html>";
        webBrowser1.Document.Click += Document_Click;
    }

    void Document_Click(object sender, HtmlElementEventArgs e)
    {
        if (webBrowser1.Document.ActiveElement.TagName == "A")
        {
            System.Diagnostics.Process.Start(webBrowser1.Document.ActiveElement.GetAttribute("HREF"));
        }
        e.ReturnValue = false;
    }
void Form_Load()
{
webBrowser1.DocumentText=“”;
webBrowser1.Document.Click+=文档\单击;
}
作废文档\u单击(对象发送者,HtmlElementEventArgs e)
{
如果(webBrowser1.Document.ActiveElement.TagName==“A”)
{
System.Diagnostics.Process.Start(webBrowser1.Document.ActiveElement.GetAttribute(“HREF”);
}
e、 ReturnValue=false;
}

我刚刚找到了答案,效果很好

private void webBro_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
    if (e.Url.ToString() != "about:blank")
    {
        e.Cancel = true;
        System.Diagnostics.Process.Start(e.Url.ToString());
    }
}

确实,工具箱WebBrowser没有获得
href
标记。什么也没发生。试着在这里查看问题:谢谢你的评论。我认为您的方法是在WebBrowser上加载PDF文件。但是,我想调用一个新进程作为PDF文件的默认读卡器,称为
Adobe reader
或类似的东西。我应该将它放在哪里?如果使用RichTextBox而不是WebBrowser,则可以使用Hyperlink并将处理程序附加到它。不知道如何在普通的网络浏览器中完成。可能只是修改指向绝对uri的链接,如文件://…e.t.C感谢您的评论。我通过WebBrowser找到了答案。我应该把它放在哪里?@PMay1903如果链接或整个广场有活动,请将它放在活动内。事件应为“单击”。
private void webBro_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
    if (e.Url.ToString() != "about:blank")
    {
        e.Cancel = true;
        System.Diagnostics.Process.Start(e.Url.ToString());
    }
}