C# WinForms HtmlElementCollection kullanımı

RoKF0siC

Hectopat
Katılım
14 Mayıs 2018
Mesajlar
180
Bu yazdığım kodlar button tıklama eyleminde çalışıyor ancak form yüklenme işleminde çalışmıyor. Kodu nasıl düzenlemem lazım_
7. satırda hata veriyor:

System. Nullreferenceexception: 'nesne başvurusu bir nesnenin örneğine ayarlanmadı.'
System. Windows. Forms. Webbrowser. Document. GET, null döndürdü.

Kod:
 private void Form1_Load(object sender, EventArgs e)
{
label2.Text = "";
webBrowser1.Navigate(URL);
webBrowser1.ScriptErrorsSuppressed = true;

HtmlElementCollection htmlElementCollection = webBrowser1.Document.All;

foreach (HtmlElement name in htmlElementCollection)
{
if (name.GetAttribute("className") == "anlik-sicaklik-deger ng-binding")
{
label2.Text = name.InnerText;
}
if (name.GetAttribute("className") == "ad_time ng-binding")
{
label5.Text = name.InnerText;
}
}
}
 
Son düzenleyen: Moderatör:
Referansını almaya çalıştığınız dokümanın tamamen yüklenmesi bekledikten sonra ilgili olayı devam ettirmeniz gerekiyormuş.

Referans:


Yani dökümanın ilk önce tamamen yüklenip yüklemediğini kontrol edip sonrasında referansı işlemeniz gerek.
 
Referansını almaya çalıştığınız dokümanın tamamen yüklenmesi bekledikten sonra ilgili olayı devam ettirmeniz gerekiyormuş.

Referans:


Yani dokümanın ilk önce tamamen yüklenip yüklemediğini kontrol edip sonrasında referansı işlemeniz gerek.

Tam olarak koda ne eklemem lazım linkleri inceledim fakat pek bir şey anlayamadım.
 

C# ile ilişkimiz Unity'yi geçmediği için şu an en fazla tahminsel yaklaşabilirim. Yukarıdaki kod örneğinde "PrintDocument" adlı fonksiyon WebBrowserDocumentCompletedEvent adlı olay tetiklendiğinde çağrılıyor. Yani sizin ilgili event'e bir fonksiyon subscribe edip bu fonksiyon içerisinde Doküman yüklemeyi tamamlamış olduğunda ilgili referansı yakalamanız gerekiyor.
C#:
private void PrintHelpPage()
{
    WebBrowser webBrowserForPrinting = new WebBrowser();
    webBrowserForPrinting.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(GetDocument);
    webBrowserForPrinting.Url = URL;
}

private void GetDocument(object sender,WebBrowserDocumentCompletedEventArgs e)
{
    htmlElementCollection = webBrowser1.Document.All;
}
 
Son düzenleme:

C# ile ilişkimiz Unity'yi geçmediği için şu an en fazla tahminsel yaklaşabilirim. Yukarıdaki kod örneğinde "printdocument" adlı fonksiyon webbrowserdocumentcompletedevent adlı olay tetiklendiğinde çağrılıyor. Yani sizin ilgili Event'e bir fonksiyon subscribe edip bu fonksiyon içerisinde doküman yüklemeyi tamamlamış olduğunda ilgili referansı yakalamanız gerekiyor.
C#:
private void PrintHelpPage()
{
WebBrowser webBrowserForPrinting = new WebBrowser();
webBrowserForPrinting.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(GetDocument);
webBrowserForPrinting.Url = URL;
}

private void GetDocument(object sender,WebBrowserDocumentCompletedEventArgs e)
{
htmlElementCollection = webBrowser1.Document.All;
}

Yardımın için teşekkürler farklı bir dokümanda buldum çözümü. Attığın dokümanlarda çalışma mantığını daha iyi kavramamı sağladı.
 

Yeni konular

Geri
Yukarı