2016-07-17 9 views
0

Wie kann ich navigieren WebBrowser1 zu einer Website, aus einer anderen Klassendatei?C# Arbeiten mit WebBrowser aus einer anderen Klasse

bassically Ich habe 2 Klassen, default eine (Form1) und zweite (MyClass), in MyClass Ich habe eine Methode mit navigiert WebBrowser1 (von Form1) zu einem zufälligen Ort:

class MyClass : Form1 
{ 
    public void navigate() 
    { 
     webBrowser1.Navigate("https://www.google.pl/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8"); 
    } 
} 

Knopf

Visual Studio zeigt keine Fehler, und die Anwendung stürzt nicht ab, nachdem ich diese Methode aufgerufen habe (per Knopf), aber es funktioniert immer noch nicht.

Ich bin ein Newb, so bitte helfen Sie mir auf einfachste Weise.

+0

Sie mehr Codes zeigen müssen, Dieser Code ist nicht genug. Wie wäre es mit dem Zeigen, wie erschafft man myclass und die Verbindung zu form1? –

+0

Geben Sie den Code für den Ereignishandler für den Klickvorgang und den Code in MyClass ein, in dem Sie versuchen, im WebBrowser-Steuerelement zu navigieren. –

+0

Woher rufst du die 'navigate' Methode? Sende diesen Code. –

Antwort

0

MyClass:

public class MyClass 
{ 
    public void Navigate(WebBrowser webBrowser) 
    { 
    webBrowser.Navigate(.....); //you can navigate webBrowser in Form1 from here 
    } 
} 

in Form1:

private void button2_Click(object sender, EventArgs e) 
{ 
    MyClass mc = new MyClass(); 
    mc.Navigate(webBrowser1); // send the reference of webBrowser1 to MyClass 
} 
0

Weil Sie MyClass von Form1 erben, Newing eine Instanz von MyClass in der Schaltfläche Click-Handler auf eine neue Instanz des Formulars erstellen , das, nehme ich an, ist nicht was du willst.

Sie haben zwei Möglichkeiten:

erste Option

entfernen MyClass zusammen und haben nur die Form1 Klasse haben diesen Code:

public partial class Form1 : Form 
{ 
    public void Navigate(string url) 
    { 
    webBrowser1.Navigate(url); 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
    this.Navigate("https://www.google.com"); 
    } 
} 

Zweite Option

Or , wenn du bist wirklich sicher, dass Sie Form1 Unterklasse bilden möchten, dann behalten Sie MyClass, aber machen Sie zwei Änderungen. Erstellen Sie keine Instanz von MyClass aus dem Klick-Handler für Schaltflächen neu. Stattdessen schreiben Sie einfach:

public class MyClass : Form1 
{ 
    public void Navigate(string url) 
    { 
    webBrowser1.Navigate(url); 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
    this.Navigate("https://www.google.com"); 
    } 
} 

und in der Program.cs Datei, ändern Sie die Zeile:

Application.Run(new Form1()); 

zu:

Application.Run(new MyClass()); 

Auf jeden Fall, auch wenn eine der beiden Optionen wird gut funktionieren, Sie müssen sich fragen, warum Sie MyClass erstellen.

+0

Vielen Dank für Ihre Hilfe. Dies war nur ein einfaches Beispiel für mein Problem, ich brauche beide Klassen. Problem gelöst, Danke noch einmal – Clockmaker

+0

Gern geschehen. :-) –

0

Ich verstehe Ihre Code-Struktur nicht, aber ich sehe, dass Sie die Navigation von WebBrowser-Steuerelement aus einer anderen Klasse steuern möchten, ist das richtig?

In Ihrem MyClass:

public class MyClass 
{ 
    // Holds the instance of web browser control 
    public WebBrowser webBrowser; 

    //Inject the WebBrowser control 
    public MyClass(WebBrowser webBrowser) 
    { 
     this.webBrowser = webBrowser; 
    } 

    public void navigate(string url) 
    { 
     this.webBrowser.Navigate(url); 
    } 
} 

Und in Ihrer Formularklasse:

private void button2_Click(object sender, EventArgs e) 
{ 
    MyClass mc = new MyClass(webBrowser1); 
    mc.navigate("http://google.com/"); 
} 

Sie können auch eine einzelne Referenz von MyClass in Ihrer Form-Klasse speichern

Verwandte Themen