我正在制作一个包含textboxes
labels
和button
webbrowser
以及webbrowser
的小程序。代码不超过80行,它包含的是一个按钮单击事件,它为neviage()
提供了在文本框中输入的链接,并调用了Application.Run
函数,第二个事件是浏览器的文档完成事件。错误如下
我已经google搜索并在stackoverflow上搜索了很多访问冲突,但我无法找到任何符合我目的的东西。在任何特定点都不会发生异常。它是随机出现的,始终位于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);
}
,没有任何堆栈跟踪!
最让我困扰的一件事就是错误发生在try块中并且没有被捕获!
这个例外是否有任何解决方案?我尝试去调试 - >例外 - >公共语言运行时异常 - >系统和检查抛出,但它不起作用。
我是一名新手程序员,原谅我的经验不足!
编辑:代码
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()
编辑:更新
正如所建议的,我删除了devexpress,创建了一个新的winform项目,将代码复制到那个并且错误仍然存在。新项目的堆栈跟踪是
{{1}}
答案 0 :(得分:0)
可能导致问题的一个原因是DevExpress组件。我有类似的问题 - 解决方案是强制初始化酒吧经理。所以你可以尝试:
InitializeComponent
方法(在Form1.Designer.cs文件中)中设置断点并逐步执行每一行,其中一行应该会出错。如果您找到一个可以发布该行,我们可能会尝试重现错误或尝试找出解决方法。还尝试以管理员身份启动Visual Studio。