Я довольно много работал с навигационными DOM WebBrowser и обычно не сталкивался с проблемой обхода ... возможно, это слишком рано утром:
MessageBox.Show работает точно так, как ожидалосьпоказывает правильное значение:
Однако в строке while генерируется исключение нулевого указателя, потому что form является нулем (подтверждено в отладчике).
HtmlElementCollection el = webBrowser.Document.GetElementsByTagName("h1");
MessageBox.Show(el[0].InnerHtml);
HtmlElement form = el[0];
while (form.TagName != "form")
{
form = form.Parent;
}