C# WinForms HtmlElementCollection kullanımı

theHashCampo

Kilopat
Katılım
14 Mayıs 2018
Mesajlar
187
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ı.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı