일부 프로그램은 textboxes
이고 일부는 labels
이고 button
및 webbrowser
입니다. 코드는 80 줄을 넘지 않으며 포함 된 모든 것은 webbrowser
에 텍스트 상자에 입력 된 링크를 제공하고 neviage()
함수가 호출되고 두 번째 이벤트가 브라우저의 문서 완료 이벤트 인 버튼 클릭 이벤트입니다. 내가 봤 및 액세스 위반에 대한 유래에 많이 검색 한아주 작은 프로그램에서 액세스 위반 예외 C#
을 다음하지만 난 내 목적을 위해 아무것도 찾을 수 없습니다로 오류입니다. 예외는 특정 시점에서 발생하지 않습니다. stacktrace없이 임의로 그리고 항상 Application.Run
에 나타납니다!
가장 신경 쓰이는 것은 try 블록에서 오류가 발생하고 잡히지 않는다는 것입니다.
그리고이 예외에 대한 해결책이 있습니까? 나는 디버그 -> 예외 -> 공용 언어 런타임 예외 -> 시스템을 시도하고 던진 것을 확인하려고 시도했지만 작동하지 않았습니다.
나는 초보 프로그래머이므로 미숙 한 사람을 용서하십시오!
편집 : 코드
public Form1()
{
InitializeComponent();
}
private void simpleButton_Go_Click(object sender, EventArgs e)
{
webBrowser1.Navigate(textEdit_url.Text);
webBrowser1.ScriptErrorsSuppressed = true;
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser1.Url.ToString().Contains("member/login"))
{
if (webBrowser1.Document.GetElementById("email_address")!=null)
{
webBrowser1.Document.GetElementById("email_address").SetAttribute("value", textEdit_username.Text);
webBrowser1.Document.GetElementById("member_password").SetAttribute("value", textEdit_password.Text);
var c = webBrowser1.Document.GetElementsByTagName("button");
foreach (HtmlElement element in c)
{
if (element.InnerText == "Login")
element.InvokeMember("click");
}
}
}
if (webBrowser1.Document.GetElementById("toolbar_login") != null && webBrowser1.Document.GetElementById("toolbar_login").InnerText == "Log In")
{
webBrowser1.Navigate("www.somesite.com");
}
else if (webBrowser1.Url.ToString() == textEdit_url.Text)
{
var c = webBrowser1.Document.GetElementsByTagName("button");
foreach (HtmlElement element in c)
{
if (element.InnerText == "Add to this list")
{
element.InvokeMember("click");
var te = webBrowser1.Document.GetElementsByTagName("textarea");
}
}
}
else
webBrowser1.Navigate(textEdit_url.Text);
}
편집 : 업데이트
으로, 나는, DevExpress의 제거 새의 WinForm 프로젝트를 만들 것을 제안에 코드 오류를 복사 여전히했다. 새 프로젝트의 스택 추적은
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at app.Program.Main() in C:\Documents and Settings\admin\My Documents\Visual Studio 2010\Projects\app\app\Program.cs:line 18
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
F11과 디버그 포인트를 사용하면 어떻게됩니까? –
Form1의 생성자를 게시하십시오. – cadrell0
호출 스택 창을 열고 예외가 실제로 * 발생한 위치를 표시하는 스택을 게시하십시오. – kuba