2016-07-17 5 views
0

別のクラスファイルからWebBrowser1をウェブサイトに移動するにはどうすればよいですか?C#別のクラスのWebブラウザーでの作業

Bassically私は、2クラス、デフォルトの1(Form1)と第二(MyClass)を持っているMyClassに、私はいくつかのランダムなサイトに(Form1から)WebBrowser1をナビゲートしているとの方法があります。

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

ボタン

public partial class Form1 : Form 
    { 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button2_Click(object sender, EventArgs e)   
    { 
     MyClass mc = new MyClass(); 
     mc.navigate(); 
    } 
    } 

Visual Studioはエラーを表示していないため、このメソッドをボタンで呼び出すとアプリケーションがクラッシュすることはありませんが、それでも機能しません。

Im Newb、soo最も簡単な方法で私を助けてください。

+0

でのMyClassの単一の参照を格納することができ、そのコードでは十分ではありません。どのように表示するか、myclassをどのように作成し、form1への接続を作成しますか? –

+0

ボタンクリックイベントハンドラのコードとWebCloudコントロールをナビゲートしようとしているMyClass内のコードを送信します。 –

+0

どこから 'navigate'メソッドを呼び出していますか?そのコードを投稿してください。 –

答えて

0

のMyClass:Form1の中

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

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

あなたはForm1からMyClassを継承しているため、ボタンのクリックハンドラでNEWINGアップMyClassのインスタンスは、フォームの新しいインスタンスを作成します。あなたが望むものではないと私は推測しています。

まずオプション

完全MyClassを削除し、ちょうどForm1クラスを持って、このコードがあります:

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"); 
    } 
} 

2番目のオプションを

それとも

は、2つのオプションがあります、 あなたがいる場合Form1をサブクラス化してから、MyClassのままにしておきますが、2つの変更を加えてください。ボタンクリックハンドラ内からMyClassのインスタンスを新規作成しないでください。でも、2つのオプションのいずれかが、いずれにせよ

Application.Run(new MyClass()); 

Application.Run(new Form1()); 

へ:Program.csファイルで、行を変更し、

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"); 
    } 
} 

をして:その代わり、ただ書きますあなたはなぜMyClassを作成しているのか自分に尋ねる必要があります。

+0

お世話になりました。これは私の問題の単純な例でした。私はこれらのクラスを両方持っている必要があります。 問題が解決しました。ありがとう、もう一度 – Clockmaker

+0

よろしくお願いします。 :-) –

0

コード構造はわかりませんが、WebBrowserコントロールのナビゲーションを別のクラスから制御したいと思っています。あなたの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); 
    } 
} 

そして、あなたのフォームクラスで:

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

また、あなたはより多くのコードを表示する必要がありますフォームクラス

関連する問題