363 Stimmen

Wie man in C# im Standardbrowser öffnet

Ich bin eine kleine C#-Anwendung zu entwerfen und es gibt einen Webbrowser in es. Ich habe derzeit alle meine Standardeinstellungen auf meinem Computer sagen, dass Google Chrome mein Standardbrowser ist, aber wenn ich auf einen Link in meiner Anwendung klicken, um in einem neuen Fenster zu öffnen, öffnet es Internet Explorer. Gibt es eine Möglichkeit, diese Links stattdessen im Standardbrowser öffnen zu lassen? Oder stimmt etwas mit meinem Computer nicht?

Mein Problem ist, dass ich einen Webbrowser in der Anwendung habe, so sagen Sie zu Google gehen und geben Sie "Stack Overflow" und klicken Sie mit der rechten Maustaste auf den ersten Link und klicken Sie auf "In neuem Fenster öffnen" öffnet es in IE statt Chrome. Ist das etwas, das ich falsch kodiert habe, oder ist eine Einstellung auf meinem Computer nicht korrekt.

\===EDIT===

Das ist wirklich ärgerlich. Mir ist schon klar, dass es sich bei dem Browser um den IE handelt, aber vorher hat er gut funktioniert. Wenn ich auf einen Link geklickt habe, wurde er in Chrome geöffnet. Damals habe ich die Anwendung mit sharp develop erstellt, weil ich c# express nicht zum Starten bringen konnte. Ich habe Windows neu installiert, und da ich mit meiner Anwendung noch nicht sehr weit fortgeschritten war, beschloss ich, neu anzufangen, und jetzt habe ich dieses Problem. Deshalb bin ich mir nicht sicher, ob es an meinem Computer liegt oder nicht. Warum startet IE den gesamten Browser, wenn ein Link angeklickt wird, anstatt einfach den neuen Link im Standardbrowser zu öffnen?

615voto

SLaks Punkte 832502

Sie können einfach schreiben

System.Diagnostics.Process.Start("http://google.com");

EDITAR : Die WebBrowser Steuerelement ist eine eingebettete Kopie des IE.
Daher werden alle darin enthaltenen Links im IE geöffnet.

Um dieses Verhalten zu ändern, können Sie die Navigating Veranstaltung.

155voto

Joel Harkes Punkte 9916

Für diejenigen, die diese Frage in dotnet core finden. Ich fand eine Lösung aquí

Code:

private void OpenUrl(string url)
{
    try
    {
        Process.Start(url);
    }
    catch
    {
        // hack because of this: https://github.com/dotnet/corefx/issues/10361
        if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
        {
            url = url.Replace("&", "^&");
            Process.Start(new ProcessStartInfo(url) { UseShellExecute = true });
        }
        else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
        {
            Process.Start("xdg-open", url);
        }
        else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
        {
            Process.Start("open", url);
        }
        else
        {
            throw;
        }
    }
}

57voto

Mayank Tripathi Punkte 619

Nachdem ich viel recherchiert habe, habe ich das Gefühl, dass die meisten der gegebenen Antworten nicht mit Dotnet Core funktionieren werden. 1. System.Diagnostics.Process.Start("http://google.com") -- Funktioniert nicht mit dotnet core

2. es wird funktionieren, aber es wird das Öffnen des neuen Fensters blockieren, wenn der Standardbrowser Chrome ist

 myProcess.StartInfo.UseShellExecute = true; 
    myProcess.StartInfo.FileName = "http://some.domain.tld/bla";
    myProcess.Start();

Das folgende Beispiel ist das einfachste und wird in allen Szenarien funktionieren.

Process.Start("explorer", url);

44voto

user2193090 Punkte 455
public static void GoToSite(string url)
{
     System.Diagnostics.Process.Start(url);
}

das sollte Ihr Problem lösen

36voto

Andreas Punkte 3729

Haben Sie versucht Process wie hier erwähnt: http://msdn.microsoft.com/de-de/library/system.diagnostics.process.aspx ?

Sie könnten verwenden

Process myProcess = new Process();

try
{
    // true is the default, but it is important not to set it to false
    myProcess.StartInfo.UseShellExecute = true; 
    myProcess.StartInfo.FileName = "http://some.domain.tld/bla";
    myProcess.Start();
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X