私はtextboxes
とlabels
のbutton
とwebbrowser
の小さなプログラムを作っています。コードは80行以下で、その中にはボタンのクリックイベントがあり、webbrowser
にテキストボックスに入力されたリンクがあり、neviage()
関数が呼び出され、2番目のイベントはブラウザのドキュメント完了イベントです。私はGoogleで検索し、アクセス違反についてのstackoverflowに多くのことを検索しました非常に小さなプログラムでのアクセス違反例外C#
に従いますが、私は私の目的のために何かを見つけることができなかったとして、エラーがあります。例外は特定の時点では発生しません。スタックトレースなしで、ランダムに出現し、常にApplication.Run
になります!
私を最も悩ますことの1つは、tryブロックでエラーが発生しており、キャッチされていないことです。
この例外の解決法はありますか?私はデバッグ - >例外 - >共通言語ランタイム例外 - >システムとスローチェックに行きましたが、動作しませんでした。
私は初心者のプログラマーですので、私の経験不足を許してください!
EDIT:コード
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);
}
EDIT:
としては、私は、DevExpress社を削除し、新たなWinフォームプロジェクトを作った、それにコードをコピーしてもエラーが来た提案を更新します。新しいプロジェクトのスタックトレースは、問題がDevExpress社のコンポーネントである引き起こす可能性があるものの
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