2013-04-03 18 views
0
private: System::Void link1_Click(System::Object^ sender, System::EventArgs^ e) 
    { 
     navigate(url1); 
    } 


private: System::Void navigate(System::String^ url) 
    { 
      for each (System::Windows::Forms::HtmlElement^ webpageelement in webBrowser->Document->All) 
      { 
       if (webpageelement->GetAttribute("u")) 
        this->webBrowser->Document->GetElementById("u")->SetAttribute("value", url); 
      } 

      for each (System::Windows::Forms::HtmlElement^ webpageelement in webBrowser->Document->All) 
      { 
       if (webpageelement->GetAttribute("value") == "Go") 
        webpageelement->InvokeMember("click"); 
      } 
    } 

У меня есть много других кнопок, которые вызывают функцию navigate(), но я буду публиковать только одну картинку, но они будут одинаковыми, кроме значения url. мой вопрос в том, как я могу заставить мое приложение перестать выходить/иметь ошибку, если я нажимаю кнопку, даже если webpageelement («u») не присутствует в форме. coz, если я нажму на него, даже если форма еще не загружена полностью, я получил сообщение с сообщением об ошибке необработанного исключения, я хочу изменить это на что-то другое или просто проигнорировать его и позволить моему приложению повторить попытку. ТНХC++ winform обработка ошибок

+0

Вам нужно будет исправить свой код, он не может работать по дизайну. Переместите код в обработчик событий для события DocumentCompleted. –

ответ

0

Использование try и catch может дать вам некоторые основные пути ... Например

for each (System::Windows::Forms::HtmlElement^ webpageelement in webBrowser->Document->All) 
{ 
    try 
    { 
     if (webpageelement->GetAttribute("u")) 
     this->webBrowser->Document->GetElementById("u")->SetAttribute("value", url); 
    } 
    catch (Exception^ ex) 
    { 
     // Do something here, can be blank... 
     // This will try the above code, if it doesn't work it will continue without any error popup 
    } 
} 
+0

hi, thx для ответа, но im с ошибкой, когда я пробую это: «неспособность бросить или поймать управляемый объект по значению или ссылке» и «не может быть пойман как деструктор и/или конструктор копирования недоступны " –

+1

Вам нужно положить'^'в предложение catch:' catch (Exception^ex) '. См. Править. –

1

Использование обработки для такой простой проверки является излишним исключение. Просто выполните следующие действия:

HtmlElement ele = this->webBrowser->Document->GetElementById("u"); 
if (ele != null) 
    ele->SetAttribute("value", url); 
Смежные вопросы