Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
WebBrowser Sayfa Yüklenince İşlem Yapma
#1
Merhaba arkadaşlar,

C# ile uygulama geliştiriyorsanız ve WebBrowser kullanıyorsanız şöyle bir sorunla karşı karşıya kalmanız muhtemeldir.
Eğer webBrowser üzerinde bir sayfa gezintisi (navigate) başlatırsak ve hemen akabinde sayfayla ilgili işlem yapmak istersek hayal kırıklığına uğrayabiliriz.
Bunu hemen bir örnek üzerinde inceleyelim.

Diyelim ki; webbrowser üzerinden bir sayfaya girerek sayfanın kaynağını almak istiyoruz.
Bunun için formumuzda 1 adet buton, 1 adet WebBrowser, 1 adette textbox nesnemiz olsun. Butona tıkladığımızda WebBrowser ile www.google.com.tr adresini açıp akabinde sayfanın kaynağını alalım.

Bunun için şöyle bir kod kullanabiliriz.


Kod:
void Button1Click(object sender, EventArgs e)
    {
        webBrowser1.Navigate("https://www.google.com.tr");
        textBox1.Text = webBrowser1.DocumentText;
    }

İlk bakışta bu kod bloğu işimizi sorunsuzca halledecek gibi gözüksede çalıştırdığımızda durumun hiçte öyle olmadığnı görürüz.
Bunun nedeni; butona tıkladığımızda, 1. satırda webbrowser nesnemizde hedef sayfa açılması için komut verilir ve hemen akabinde 2. satır işletilir. 
Sayfa yüklenmesi zaman alacağından 1. satırdan sonra 2. satırın hemen işletilmesiyle, henüz sayfa yüklenmeden sayfa kaynağı alınmaya çalışılmış olacaktır. Bu nedenle de sayfa kaynağı alma işlemi gerçekleşmeyecek ve muhtemelen kaynak yerine boş bir atama gerçekleşecektir.

Peki, bu sorunun önüne nasıl geçebiliriz?
Bunun için WebBrowserReadyState özelliğinden yararlanabiliriz. Bu özellik bize sayfanın ne durumda olduğu hakkında bilgi verir.
Sayfa yüklemesi tamamlanıncaya kadar bekletmek için kodumuzu aşağıdaki şekilde düzenleyip deniyoruz.


Kod:
void Button1Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate("https://www.google.com.tr");
            while(webBrowser1.ReadyState != WebBrowserReadyState.Complete)
            {
                Application.DoEvents();
            }
            textBox1.Text = webBrowser1.DocumentText;
        }


Kodumuzu yukarıdaki gibi düzelterek sayfa yükleninceye kadar bir döngüyle kontrol sağlayarak bekletme işlemi uyguluyoruz.
Sayfa yüklendikten sonra kaynağı aldığımız içinde herhangi bir sorunla karşılaşmıyoruz....
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Yazının ilk harfini büyük yapma Administrator 0 3,981 10-08-2016, 08:36
Son Yorum: Administrator
  C# İle MyBB Kullanıcı Girişi Yapma root 0 4,166 19-02-2016, 16:33
Son Yorum: root
  Listbox içinde arama yapma [C#] Administrator 0 6,425 19-01-2016, 14:44
Son Yorum: Administrator
  C# webBrowser Otomatik Kaydırma Fonksiyonu [AutoScroll] root 0 10,864 09-11-2015, 19:09
Son Yorum: root

Hızlı Menü:


Konuyu Okuyanlar: 1 Ziyaretçi