我有一个Windows窗体应用程序VS2010 C#,其中我显示一个MessageBox来显示一条消息.
我有一个好的按钮,但如果他们走开,我想超时并关闭消息框后,让我们说5秒,自动关闭消息框.
有自定义的MessageBox(继承自Form)或其他报告者表单,但有趣的是没有必要的Form.
关于它的任何建议或样品?
更新:
对于WPF
在C#中自动关闭消息框
自定义MessageBox(使用表单继承)
http://www.codeproject.com/Articles/17253/A-Custom-Message-Box
http://www.codeproject.com/Articles/327212/Custom-Message-Box-in-VC
http://tutplusplus.blogspot.com.es/2010/07/c-tutorial-create-your-own-custom.html
可滚动MessageBox
C#中的可滚动MessageBox
例外记者
/sf/ask/3445711/
http://www.codeproject.com/Articles/6895/A-Reusable-Flexible-Error-Reporting-Framework
解:
也许我认为以下答案是很好的解决方案,而不使用表格.
我必须坚持不懈地寻找,因为这是我无法解决的另一个看似常见的问题.
这是我的问题 - 我正在使用WPF和MVVM,并且我有一个在模型中执行的状态机.如果发生错误,我需要将信息传递给ViewModel以显示错误.这部分似乎工作正常.当用户单击所需行为时,模型中的代码将继续,并查看用户与之交互的对象以确定下一步操作.
问题是模型需要重新加载文件,该文件用所述文件的内容更新GUI.因为模型在一个线程中执行,你可以想象我接下来要问的问题 - 你到底该如何正确地与GUI同步?在MFC中,我会使用SendMessage或PostMessage来完成GUI更新.
我读过WinForms的文章,建议使用InvokeRequired在必要时自动调用BeginInvoke.我实际上不知道BeginInvoke会完成我想要的东西,所以我被鼓励学习这个.
我如何从我的模型中实际调用BeginInvoke?这种方法甚至适用于WPF吗? 我继续并实现了一个委托,然后调用了Invoke,但我得到了同样的错误,告诉我无法从该线程修改集合.我也尝试过BeginInvoke,但是我认为它也行不通,因为它无论如何都会从另一个线程启动.
困惑.如果我错过了一些关于互联网的非常明显的内容,请继续给我一个口头抨击,我可能应得的.
编辑 - 我应该补充一点,我正在寻找除定时器或基于BackgroundWorker的解决方案以外的东西,除非这是在WPF/MVVM中解决这个问题的唯一方法.另外,我想知道是否有任何MVVM工具包已经有了这类工具的设施......