2016-06-06 5 views
1

CefSharp 라이브러리를 사용하여 C# 응용 프로그램에 Chromium WebBrowser를 추가했으며 사용자가 이전 페이지로 이동할 수 있도록 '뒤로'버튼에 기능을 추가하려고합니다. 난 그냥 '뒤로'버튼을 누를 때 호출되는 방법이 라인을 작성하는 경우 다음,Chromium webBrowser 탐색 방법

browser.WebBrowser.Back(); 

그러나 예외 :

내가 알고있는 것처럼

이는 다음 행으로 할 것 내 응용 프로그램이 중단됩니다.

예외 말한다

예외 처리되지 않은

CefSharp.dll

에 추가 정보를 발생 타입의 처리되지 않은 예외 'System.Exception'이었다 lBrowser 인스턴스가 null. 브라우저 초기화가 완료되지 않았거나 처리 중입니다.

왜 예외가 발생합니까? 나는 예외가 발생하는 라인을 통해 내 커서를 가져 가면 는 메시지가 밝히는 팝업 :

(확장) 무효 lWebBrowser.Back()

전에 lWebBrowser.CanGoBack을 선택해야합니다, 다시 탐색 이 메소드를 호출합니다. 그때 즉 첫째 lWebBrowser.CanGoBack의 가치를 확인하는 if 문, 안쪽이 줄을 이동하면 내 응용 프로그램을 실행할 있지만

는하지만,

if(browser.WebBrowser.CanGoBack){ 
    browser.WebBrowser.Back(); 
} 

는, CanGoBack는 항상 시간을 false- 것으로 보인다 나는 '뒤로'버튼을 누르고, 내 콘솔에 표시된 디버그는 이것이 거짓임을 나타냅니다 ... 그러나 true의 값을 지정하려고하면 (즉, 사용자가 다른 페이지로 이동하면 이동할 페이지가 있음) back to) 예 :

,210
browser.WebBrowser.CanGoBack = true; 

가 나는 말한다 컴파일 오류 얻을 :

건물 또는 인덱서를 'lWebBrowser.CanGoBack'에 할당 할 수 없습니다 - 그것은

그래서 어떻게 브라우저를 강제 할 수 읽기 전용 사용자가 '뒤로'버튼을 클릭하면 페이지를 탐색 할 수 있습니까?

+0

'브라우저가 초기화를 완료하지 못했습니다 .' 예외로 브라우저가 초기화를 완료하지 않았다고합니다. 초기화 될 때까지 메소드를 실행할 수 없습니다. 'CanGoBack'은 설정할 수있는 속성이 아니며, 브라우저 자체에서 계산됩니다. 브라우저가 로딩을 마쳤을 때'CanGoBack'을 설정해야합니다. 설명이 필요한 경우 출처를 살펴보십시오. 'WinForms' 또는'WPF'를 사용하는 경우 명시하지 않았으므로 자세한 대답을 제공 할 수 없습니다. – amaitland

답변

0

그래서 제가 설치했던 CefSharp의 버전/내가 참조한 버전과 관련이있는 것으로 보입니다. 설치되어 있고 최신 버전을 참조하고 있었지만 컴파일러가 참조하고 있다고 생각하는 것 같았습니다. 이전 버전이었고 어떤 버전을 사용해야한다고 생각하는지 결정할 수 없었습니다. CefSharp를 제거하고 내가 작성한 참조를 모두 제거한 후 다시 설치/다시 사용하면 브라우저가 올바르게 사용되며 현재 표시중인 웹 페이지와 완전히 상호 작용할 수 있습니다. .

+0

그게 해결 됐어! 당신의 대답은 당신이 묻는 질문과 맞지 않습니다. 제거는'GoBack'과'CanGoBack'과 관련이없는 것으로 보입니다. – amaitland