StackOverflow에서이 항목과 관련된 몇 가지 스레드를 보았지만 그 중 아무 것도 대답을 제공하지 않는 것 같습니다.C# WPF - 페이지가로드되기를 기다리는 중
버튼을 클릭하면 보이지 않는 웹 페이지가 열리 며 URL로 이동하고 상자에 정보를 입력하고 버튼을 누른 다음 정보를 얻기 위해 화면을 긁습니다. 기본적 클릭으로 내 코드의
뼈 :
WebBrowser wb = new WebBrowser;
wb.Visibility = System.Windows.Visibility.Hidden;
wb.Navigate("http://somepage.com");
그리고 그것은 까다로운 얻는 곳입니다.
을 찾으려면 페이지가 데이터를 입력하거나 화면을 긁기 전에로드되는지 확인하십시오. Navigated
, IsLoaded
, LoadCompleted
및 BackgroundWork
에 관한 몇 가지 스레드를 보았지만 작동하지 않습니다.
페이지가 완전히로드되었는지 확인하는 데 가장 좋은 옵션은 무엇입니까? 선택한 방법을 어떻게 활용 하시겠습니까?
또한 WPF는 동일한 GetElementByID
을 사용하지 않으므로 화면에서 데이터를 가져올 수 없습니다.
편집 : 아래의 코멘트 당
, 나는 여기에 실행 오류입니다 :
- 탐색 첫째 즉시 페이지가 너무 탐색되었으며, 반드시 모든 객체 때까지 기다려야하지 않는 한을 로드됩니다. 이것은 의도 한대로 작동하지만 내 용도로는 사용할 수 없습니다.
IsLoaded
결코
private void GetData_Click(object sender, RoutedEventArgs e)
{
int x=0;
HTMLDocument doc;
wb = new WebBrowser();
wb.Visibility = System.Windows.Visibility.Visible;
wb.Navigate("somesite.com");
doc = wb.Document as mshtml.HTMLDocument;
while(!wb.IsLoaded)
{
//Wait
}
doc.getElementById("txt_One").innerText = "It Worked";
}
사실 이제까지로드하지 않는 것
wb
로 무한 루프에 넣 반환하지 않습니다.
- 이는 LoadCompleted와 버전
'System.Windows.Controls.WebBrowser.LoadCompleted'에서만 이벤트 + = 또는 좌측에 표시 될 수- =
private void GetData_Click(object sender, RoutedEventArgs e)
{
int x=0;
HTMLDocument doc;
wb = new WebBrowser();
wb.Visibility = System.Windows.Visibility.Visible;
wb.Navigate("somesite.com");
doc = wb.Document as mshtml.HTMLDocument;
wb.LoadCompleted += wb_LoadCompleted;
doc.getElementById("txt_One").innerText = "It Worked";
}
void wb_LoadCompleted(object sender, NavigationEventArgs e)
{
}
오류를 생성
{filename}에서 처리되지 않은 예외 'System.NullReferenceException'이 발생했습니다.
추가 정보 : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.
"작동하지 못함"에 대해 자세히 설명하십시오. 코드를 보여주고, 각 시도의 문제점을 훨씬 자세히 설명하십시오. 코드를 보지 않아도 작동하지 않는 이유는 말할 수 없습니다. – tnw
수정 해 주셔서 감사합니다. **하지만 ** 코드를 보여주십시오 **. – tnw