2012-02-17 2 views
1

Navigating 이벤트의 처리기에서 WebBrowser 컨트롤이 탐색하는 Uri를 변경할 수 있습니까?WebBrowser에서 Uri를 변경하십시오 .Navigating

// I can not do this. 
// e.Uri = new Uri("http://newUri"); 

e.Cancel = true; 
((WebBrowser)sender).Navigate(new Uri("http://newUri")); 
: 그것은 읽기 전용 있기 때문에

이벤트 인수에

열린이, 변경할 수 없습니다 그러나, 나는 탐색을 취소하고이 같은 탐색 방법과 새로운 주소로 브라우저를 보내려고 그러나

은 예외없이 응용 프로그램을 중단시킵니다.

누구든지이 문제에 대한 해결책을 알고 있습니까?

+1

'Navigate' 메소드를'Dispatcher' 블록에 넣으시겠습니까? – Ku6opr

+0

시도했지만 도움이되지 않았습니다. –

답변

0

... 부울을 추가

시도는 코드의 재귀를 중지 ... 다시 이벤트를 발생하는, 다시 탐색 브라우저를 말해 이것은 에뮬레이터 버그입니다. 내 접근 방식은 에뮬레이터 충돌로 실행되는 응용 프로그램을 만들지 만 실제 장치에서는 제대로 작동합니다.

1

내 생각 엔 스택 오버플로를 일으키는 것 같습니다. 때마다 탐색 이벤트가 발생, 당신은 그것은 밝혀졌다

private bool isRedirecting = false; 

private void WebBrowser_OnNavigate(object sender, EventArgs e) 
{ 
    if (isRedirecting) 
    return; 

    e.Cancel = true; 

    isRedirecting = true; 
    ((WebBrowser)sender).Navigate(new Uri("http://newUri")); 
    isRedirecting = false; 
} 
+0

코드의 해당 부분을 표시하지는 않았지만 이벤트의 첫 번째 발생에서만 사실 인 조건을 이미 확인하고 있습니다. 디버깅을 시도하고 Navigating 이벤트가 한 번만 발생했습니다. –

관련 문제