2

aと aを使用して、いくつかtextboxesといくつかの小さなプログラムを作成しています。コードは 80 行以下であり、テキスト ボックスに入力されたリンクを提供するボタン クリック イベントと関数が呼び出されるボタン クリック イベントだけが含まれており、2 番目のイベントはブラウザーのドキュメント完了イベントです。エラーは次のとおりですlabelsbuttonwebbrowserwebbrowserneviage()

ここに画像の説明を入力

アクセス違反についてstackoverflowでグーグル検索して検索しましたが、目的に合ったものを見つけることができませんでした。例外は特定の時点では発生しません。Application.Runスタックトレースなしでランダムに、常に表示されます!

私を最も悩ませていることの 1 つは、エラーが try ブロックで発生していて、キャッチされていないことです!

そして、この例外に対する解決策はありますか? debug->exceptions->Common Language Runtime Exceptions->System に移動して、スローされたチェックを試みましたが、機能しませんでした。

私は初心者のプログラマーなので、経験不足を許してください!

編集:コード

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()
4

1 に答える 1

0

問題を引き起こす原因の 1 つは、DevExpress コンポーネントにあります。同様の問題がありました-解決策は、バーマネージャーを強制的に初期化することでした。だからあなたは試すことができます:

  1. DevExpress コンポーネントを削除して、動作するかどうかを確認します。
  2. メソッド(Form1.Designer.csファイル内)にブレークポイントを設定し、InitializeComponent各行をステップ実行すると、そのうちの1つでエラーが発生するはずです。見つけた場合は、その行を投稿してください。エラーを再現したり、修正方法を見つけたりすることができます。

また、Visual Studio を管理者として起動してみてください。

于 2012-05-03T13:47:55.567 に答える