为什么在单击ToolStrip按钮两次时抛出NullReferenceException - openFileDialog.showDialog()?
我创建了一个干净的WindowsFormsApplication解决方案,在主窗体上添加了一个
ToolStrip
,并在其上放置了一个按钮。我还添加了一个OpenFileDialog
,因此ToolStripButton
的Click
事件如下所示:
private void toolStripButton1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
}
我没有改变任何其他属性或事件。
有趣的是,当我双击ToolStripButton
(第二次单击必须非常快,在对话框打开之前),然后取消两个对话框(或选择一个文件,它并不重要),然后单击客户端主要形式的区域,NullReferenceException
使应用程序崩溃(错误详细信息附在帖子的末尾)。请注意,Click
事件已实施,而DoubleClick
则未实施。
更令人奇怪的是,当OpenFileDialog
被任何用户实现的表单替换时,ToolStripButton
阻止被点击两次。
我在Windows 7 Professional(来自MSDNAA)上使用VS2008和.NET3.5进行最新更新。我没有在VS中更改很多选项(只有fontsize,工作区文件夹和行编号)。
有谁知道如何解决这个问题?它在我的机器上是100%可复制的,是否也在其他机器上?
我能想到的一个解决方案是在调用OpenFileDialog.ShowDialog()
之前禁用按钮然后再启用按钮(但这并不好)。还有其他想法吗?
现在承诺的错误细节:
System.NullReferenceException未处理
Message =“对象引用未设置为对象的实例。”
来源= “System.Windows.Forms的”
堆栈跟踪:
在System.Windows.Forms.NativeWindow.WindowClass.Callback(IntPtr hWnd,Int32 msg,IntPtr wparam,IntPtr lparam)
在System.Windows.Forms.UnsafeNativeMethods.PeekMessage(MSG& msg,HandleRef hwnd,Int32 msgMin,Int32 msgMax,Int32 remove)
在System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID,Int32 reason,Int32 pvLoopData)
在System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason,ApplicationContext context)
在System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason,ApplicationContext context)
在System.Windows.Forms.Application.Run(Form mainForm)
在WindowsFormsApplication1.Program.Main()w C: Users Marchewek Desktop Workspaces VisualStudio WindowsFormsApplication1 Program.cs:第20行
在System.AppDomain._nExecuteAssembly(Assembly assembly,String [] args)
在System.AppDomain.ExecuteAssembly(String assemblyFile,Evidence assemblySecurity,String [] args)
在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在System.Threading.ThreadHelper.ThreadStart_Context(对象状态)
在System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态)
在System.Threading.ThreadHelper.ThreadStart()
的InnerException:
没有找到相关结果
已邀请:
3 个回复
粳饶瓢部
下次升级框架时,可以尝试将其删除。 尼尔
门锑腺潮
赐黄