クリーンなWindowsFormsApplicationソリューションを作成し、ToolStrip
をメインフォームに追加し、その上に1つのボタンを配置しました。 ToolStripButton
のClick
イベントには、次のように見えるように、私は、またOpenFileDialog
追加しました:ToolStripボタンを2回クリックしたときにNullReferenceExceptionがスローされるのはなぜですか?openFileDialog.showDialog()?
private void toolStripButton1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
}
私は他のプロパティやイベントを変更しませんでした。
面白いのは、ToolStripButton
(ダイアログが開く前に2番目のクリックが速くなければならない)をダブルクリックしてから、両方のダイアログをキャンセルするか(またはファイルを選択するかどうかは関係ありません)メインフォームのクライアントエリアをクリックすると、NullReferenceException
がアプリケーションをクラッシュします(エラーの詳細は投稿の最後に添付されます)。 DoubleClick
はではありませんが、Click
イベントが実装されています。さらに奇妙なOpenFileDialog
は、任意のユーザー実装の形に置き換えられたときに、よりToolStripButton
ブロックが二回クリックされていることは何
。
私は最新のアップデートでWindows 7 Professional(MSDNAAから)で.NET3.5でVS2008を使用しています。私はVSで多くのオプションを変更しなかった(フォントサイズ、ワークスペースフォルダ、行番号のみ)。
誰もこれを解決する方法を知っていますか?私のマシンでは100%複製可能ですが、他のマシンでも同じですか?
私が考えることができる1つの解決策は、OpenFileDialog.ShowDialog()
を呼び出す前にボタンを無効にしてから、ボタンを有効に戻すことです(しかし、それはうまくありません)。他のアイデア?
そして今、約束したエラーの詳細:
System.NullReferenceExceptionは
メッセージ=「オブジェクトのインスタンスに設定されていないオブジェクト参照。」未処理でした
ソース= "のSystem.Windows.Forms"
のStackTrace:のSystem.Windows.FormsでSystem.Windows.Forms.NativeWindow.WindowClass.Callbackで
(のIntPtr hWndを、のInt32 MSG、のIntPtr WPARAM、LPARAMのIntPtr)
System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(のInt32 dwComponentID、のInt32で.UnsafeNativeMethods.PeekMessage(MSG & MSG、HandleRef HWND、のInt32 msgMin、のInt32 MSGMAX、のInt32削除)
理由、Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32理由、ApplicationContextコンテキスト)WindowsFormsApplication1.Program.MainでSystem.Windows.Forms.Application.Run(フォームのMainForm)でSystem.Windows.Forms.Application.ThreadContext.RunMessageLoop(のInt32理由、ApplicationContextの文脈)における
()C W: \ユーザー\ Marchewek \デスクトップ\ワークスペース\ VisualStudioを\ WindowsFormsApplication1 \のProgram.cs:ライン20
System.AppDomain._nExecuteAssemblyに(アセンブリアセンブリ、文字列[]引数)System.AppDomain.ExecuteAssemblyで
(文字列assemblyFile、証拠assemblySecurity 、String [] args)
マイクロソフトでは、VisualStudio.HostingProcess.HostProc.RunUsersAssembly()System.Threading.ThreadHelper.ThreadStart_Contextで
(オブジェクトの状態)System.Threadingで
System.Threading.ExecutionContext.Run(のExecutionContextのExecutionContext、ContextCallbackコールバック、オブジェクトの状態)で
。 ThreadHelper.ThreadStart()
のInnerException:
VSオプションは無関係です。これはフレームワークのバグのようです。 – SLaks
W2K3ではVS2008、W2K8ではVS2010を使用して問題を再現することができませんでした。 –
また、XPsp3、VS2008、および.NET2.0または3.5を使用してreproできません – Andy