C# 从另一个 class 使用 WebBrowser
C# Working on WebBrowser from another class
如何从另一个 class 文件导航 WebBrowser1
到一个网站?
基本上我有 2 个 classes,默认一个 (Form1
) 和第二个 (MyClass
),在 MyClass
我有一个方法是导航 WebBrowser1
(来自 Form1
)到某个随机站点:
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 没有显示任何错误,在我调用此方法(通过按钮)后应用程序没有崩溃,但它仍然无法正常工作。
我是新手,所以请以最简单的方式帮助我。
我的班级:
public class MyClass
{
public void Navigate(WebBrowser webBrowser)
{
webBrowser.Navigate(.....); //you can navigate webBrowser in Form1 from here
}
}
在表格 1 中:
private void button2_Click(object sender, EventArgs e)
{
MyClass mc = new MyClass();
mc.Navigate(webBrowser1); // send the reference of webBrowser1 to MyClass
}
因为您是从 Form1
继承 MyClass
,所以在按钮单击处理程序中新建 MyClass
的实例将创建一个新的表单实例,我假设, 不是你想要的。
你有两个选择:
第一个选项
完全删除 MyClass
并让 Form1
class 具有此代码:
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");
}
}
第二个选项
或者,如果你真的确定要subclass Form1
,那么保留MyClass
但做两处改变。不要在按钮单击处理程序中新建 MyClass 的实例。相反,只需写:
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");
}
}
然后,在 Program.cs
文件中,更改行:
Application.Run(new Form1());
至:
Application.Run(new MyClass());
无论如何,即使这两个选项中的任何一个都可以正常工作,您需要问问自己为什么要创建 MyClass
。
我不明白你的代码结构,但我看到你想从另一个 class 控制 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);
}
}
在你的表单中 class:
private void button2_Click(object sender, EventArgs e)
{
MyClass mc = new MyClass(webBrowser1);
mc.navigate("http://google.com/");
}
您还可以在表单中存储 MyClass 的单个引用 class
如何从另一个 class 文件导航 WebBrowser1
到一个网站?
基本上我有 2 个 classes,默认一个 (Form1
) 和第二个 (MyClass
),在 MyClass
我有一个方法是导航 WebBrowser1
(来自 Form1
)到某个随机站点:
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 没有显示任何错误,在我调用此方法(通过按钮)后应用程序没有崩溃,但它仍然无法正常工作。
我是新手,所以请以最简单的方式帮助我。
我的班级:
public class MyClass
{
public void Navigate(WebBrowser webBrowser)
{
webBrowser.Navigate(.....); //you can navigate webBrowser in Form1 from here
}
}
在表格 1 中:
private void button2_Click(object sender, EventArgs e)
{
MyClass mc = new MyClass();
mc.Navigate(webBrowser1); // send the reference of webBrowser1 to MyClass
}
因为您是从 Form1
继承 MyClass
,所以在按钮单击处理程序中新建 MyClass
的实例将创建一个新的表单实例,我假设, 不是你想要的。
你有两个选择:
第一个选项
完全删除 MyClass
并让 Form1
class 具有此代码:
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");
}
}
第二个选项
或者,如果你真的确定要subclass Form1
,那么保留MyClass
但做两处改变。不要在按钮单击处理程序中新建 MyClass 的实例。相反,只需写:
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");
}
}
然后,在 Program.cs
文件中,更改行:
Application.Run(new Form1());
至:
Application.Run(new MyClass());
无论如何,即使这两个选项中的任何一个都可以正常工作,您需要问问自己为什么要创建 MyClass
。
我不明白你的代码结构,但我看到你想从另一个 class 控制 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);
}
}
在你的表单中 class:
private void button2_Click(object sender, EventArgs e)
{
MyClass mc = new MyClass(webBrowser1);
mc.navigate("http://google.com/");
}
您还可以在表单中存储 MyClass 的单个引用 class