2011-04-09 6 views
12

콘텐트를 자주 업데이트하는 WebBrowser 컨트롤이 포함 된 페이지가 있습니다. 검정색 배경을 사용하지만 WebBrowser의 내용을로드하기 전에 기본 색상이 흰색입니다. 나는 배경이 검은 색으로 설정된 작은 HTML 문자열을로드함으로써 변경할 수 있지만, 이 흰색으로 표시되는 일정한 기간이 있기 때문에 일종의 깜박 거리는 효과가 발생합니다.콘텐츠를로드하기 전에 WebBrowser 컨트롤의 배경색을 변경할 수 있습니까?

내 질문은 : WebBrowser의 기본 컨트롤의 색을 변경하는 방법이 있습니까?

콘텐츠가로드 될 때까지 WebBrowser을 숨기는 등 몇 가지 해결책을 시도했지만이 중 아무 것도 매우 우아하지 않고 잘 작동하지 않습니다.

답변

9

저는 제 경우에 효과가있는 것을 알아 냈습니다. 반드시 가장 우아한 것은 아니지만 일을 끝내게됩니다.

내가 그런 다음 WebBrowser 0의 기본 Opacity을 설정, 나는 LoadCompleted 이벤트에 대한 이벤트 핸들러 첨부 : 나는 새로운 HTML 페이지를로드하기 전에, 지금

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

을, 나는에 다시 Opacity 설정 0이면 새 HTML이 렌더링되는 동안 브라우저가 숨겨 지므로 배경이 깜박이지 않습니다. HTML로드가 끝나면 이벤트가 시작되고 새 HTML 페이지가 예상대로 표시됩니다.

+1

웹 브라우저는 ... .NET 3.5에서 내가 답변에서 솔루션을 가지고 – PatrickB

3

나는 johnforrest에 동의합니다. XAML 코드에서 기본 불투명도를 0으로 설정하고 불투명도 마스크를 검정색으로 설정하는 것이 훨씬 좋습니다. 그 후 LoadComplete 이벤트에서;

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

깜박임 없음 ... !! 당신은 다른 제안에 따라 실제 불투명도를 변경하지 않으 가정

3

, 당신은 HTML을 사용하여 초기 화면의 배경 색상을 변경할 수 있습니다

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

덕분에 더 불투명도] 속성이 없습니다 – MansinhDodiya

2

내가 발견 한 그 불투명도 또는 가시성을 변경 컨트롤의 완전히 깜박임을 숨기지 않습니다. 내 솔루션은 다음과 같이 0으로 컨트롤의 높이를 설정 한 다음이로드 후 다시 초기화하는 것입니다

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

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

browser.Navigate(...); 
관련 문제