当我在我的表单中声明了我的公共表单的内部调用公共空隙时,它可以正常工作。但是,当我从另一个类中调用它时,它不起作用..? 我在课堂上这样做。
otherForm oForm = new otherForm();
oForm.thisvoid();
在公共场合,我正在WebView中加载一个网址。正如我之前所说,从声明它的Form中调用它就可以了。因此,该函数本身并没有什么问题。
这是我的公开空白
public void thisvoid()
{
try
{
webview.LoadUrl("http://localhost:5000);
} catch (Exception ee)
{
Console.WriteLine("Error");
Console.WriteLine(ee);
}
}
错误是:
System.NullReferenceException:对象引用未设置为实例 一个对象
答案 0 :(得分:2)
根据您在注释webview
对象中写的内容,未在构造函数中初始化。将其初始化添加到otherForm
的构造函数中,它应该可以工作。
我猜想从otherForm
调用它时为什么起作用,是因为您在一路上初始化了它。
示例(编辑):
例如,使用其他类中的otherForm
关键字实例化new
时
var oF = new otherForm();
运行时在做什么,它会搜索无参数构造函数,该构造函数是在创建类实例时执行的类的特殊方法。它应该被命名为一个类。
现在第二部分-您使用的webview
是一个对象-它是控件,其他形式还是仅是某些对象。它存储在您的班级的一个字段中。但是,除非您创建它的实例,否则它为null
-表示此对象不存在,您只有其潜在的句柄。因此,您必须像这样创建该对象(类名已完全组成):
public class otherForm
{
WebView webview;
public otherForm()
{
webview = new WebView();
}
}
当然,WebView构造函数本身可能需要您需要提供的更多参数。
所以这里发生的是:
var otherForm = new otherForm();
webview
个对象的创建webView
时,该对象存在并且可以使用。您可能错过的是第4点。可以在上面找到如何包含它的示例。
更多读物: