2011-04-09 4 views
12

Sık sık içerik güncelleştiren bir WebBrowser denetimi içeren bir sayfam var. Siyah bir arka plan kullanıyorum, ancak WebBrowser içeriğinin yüklenmesinden önce varsayılan renk beyazdır. Siyahla ayarlanan arka plana sahip küçük bir HTML dizgisi yükleyerek bunu değiştirebilirdim, ancak WebBrowser beyaz olarak göründüğünde hala bir süre geçiyor, böylece bir tür bir titreme etkisi oluyor.İçeriği yüklemeden önce WebBrowser denetiminin arka plan rengini değiştirmek mümkün mü?

Soruma soru şudur: WebBrowser'un temel denetiminin rengini değiştirmenin herhangi bir yolu var mı?

İçerik yüklenene kadar WebBrowser gizleme gibi birkaç çözüm denedim, ancak bunların hiçbiri çok şık ve işe yaramıyor.

cevap

9

Durumumda çalışan bir şey buldum. Mutlaka en zarif değil ama işi bitirir.

Ben Sonra WebBrowser 0. için varsayılan Opacity set, ben LoadCompleted olay için bir olay işleyicisi ekleyin: Ben yeni bir HTML sayfası yükleme öncesinde Şimdi

private void browser_Post_LoadCompleted(object sender, NavigationEventArgs e) 
{ 
    browser_Post.Opacity = 1; 
} 

, ben geri Opacity set 0 böylece yeni HTML oluşturulurken tarayıcıyı gizler, böylece arka planların titremesi olmaz. HTML yükleme bittiğinde etkinlik tetiklenecek ve yeni HTML sayfası beklendiği gibi gösterilecektir.

+1

WebBrowser ... .NET 3.5 i Cevabınız gelen çözüm var – PatrickB

3

johnforrest ile aynı fikirdeyim. XAML kodunda varsayılan Opaklığı 0 ve Opaklık maskelemesini Siyah olarak ayarlayın. Bundan sonra LoadComplete olayında;

private void dataBrowser_LoadCompleted(object sender,NavigationEventArgs e) 
{ 
    dataBrowser.OpacityMask = null; 
    dataBrowser.Opacity = 1; 
} 

Titreme yok ... !! Eğer diğer önerilerden göre gerçek donukluk değiştirmek istemiyorum varsayarsak

3

, HTML kullanan ilk ekranın arka plan rengini değiştirebilirsiniz:

this.WebBrowser1.Navigate("about:blank"); 
    IHTMLDocument2 _doc = this.WebBrowser1.Document.DomDocument as IHTMLDocument2; 
    _doc.write("<html><body style=\"background: #f0f0f0\"></body></html>"); 
+0

sayesinde hiçbir Opaklık özelliğine sahiptir – MansinhDodiya

2

buldum ki Saydamlık veya Görünürlük değişen Kontrol, titremeyi tamamen gizlemez. Benim çözüm bu gibi 0'a denetimin yüksekliğini ayarlamak ve sonra yükler sonra geri sıfırlamak için geçerli:

double savedHeight = browser.ActualHeight; 
browser.Height = 0; 

browser.Navigated += (sender, e) => 
{ 
    browser.Height = savedHeight; 
} 

browser.Navigate(...);