为什么我会收到此异常?
对象引用未设置为对象的实例。
使用:
wb.Document.GetElementById("formfieldv1").InnerText = "some value"
其中wb
是WebBrowser
控件的名称。
以下是所有代码:
Private Sub btnSend_Click(sender As System.Object, e As System.EventArgs) Handles btnSend.Click
Dim strFrom As String = txtFrom.Text
Dim strTo As String = txtTo.Text
Dim strMsg As String = txtMsg.Text
wb.Document.GetElementById("formfieldv1").InnerText = strFrom ' strFrom fills fine
End Sub
更新
正如评论中所建议我修改了这样的代码:
Dim doc = wb.Document
If (doc Is Nothing) Then
MsgBox("doc is nothing")
End If
Dim el = wb.Document.GetElementById("formfieldv1")
If (el Is Nothing) Then
MsgBox("el is nothing")
Else
el.InnerText = strFrom
End If
我得到了el is nothing
。我现在该如何解决这个问题?
或者,如果你们可以帮助我解决我的问题,那么:
答案 0 :(得分:2)
我认为这是一个很好的例子,说明为什么将操作分解为多行,而不是尝试在一行中执行许多操作,尤其是在可以返回空值时。
如果你选择wb.Document.GetElementById("formfieldv1").InnerText = "some value"
并将其分解为
var document = wb.Document;
var element = document.GetElementById("formfieldv1");
element.InnerText = "some value";
当抛出异常时,失败的情况会更加明显。单步执行代码时,检查每个操作的结果也更容易。从编译的角度来看,它没有任何区别,它最终会被编译成相同的IL。
我认为在一行代码中尽可能多地做自然的愿望,但我认为在很多情况下它会损害可读性和调试能力。