我正在编写一个dll库(例如用于检查用户的登录详细信息),我想在此过程中弹出确认对话框或信息对话框,例如
"Are you sure you want to continue? (Yes/No/Cancel)"
出于某种原因。目前我需要这个在Winforms中的应用程序,我也想在我的其他webforms应用程序中使用相同的dll。任何人都可以指导如何实现它?不用说我不想引用System.Windows.Forms
或System.Web
。任何人都可以给我一些指示吗?我正在使用.net 4.0
我不想发布/订阅活动,因为我对cab架构不是很熟悉。
修改
我有一个用于在应用程序运行时创建数据库的DLL。所以我的dll通常检查数据库是否已经存在并且是否是最新的,如果它然后停止。但如果它不存在或不是最新的,那么我想询问用户他现在或之后是否要更新它。如果用户现在说,更新它然后继续申请。这只是一个例子,欢迎任何相关信息。
感谢。
答案 0 :(得分:6)
你真的不应该。这不属于库,但应该在使用此库的应用程序中完成。
如果WinForms应用程序可以通过显示MessageBox
来解决问题,那么Web应用程序可能会执行请求而不会在POST成功后询问(因为POST通常会显示修改资源的意图)。
例如,当您的库用于登录时,只需抛出AuthenticationException
,因此客户端应用程序(无论是WinForms,Web还是其他)都可以捕获它并显示相应的消息。
至于你的编辑:
我有一个用于在应用程序运行时创建数据库的DLL ...
为什么不公开IsDatabaseUpToDate()
和UpdateDatabase()
这两种方法?然后在客户端中,您可以调用第一个方法。如果它返回false,则询问用户(无论是使用MessageBox,HTML表单,JavaScript警报,简单的Yes按钮还是闪烁的磁贴)是否要更新数据库。如果是这样,您可以调用UpdateDatabase()
方法,然后就可以开始了。
答案 1 :(得分:0)
要完成此操作,您需要右键单击项目并选择“添加引用”,然后选择“.NET”选项卡并单击“System.Windows.Forms”。那么这应该在.dll中起作用:
System.Windows.Forms.MessageBox.Show("Hello World!");
当然这对于原始海报来说是个坏主意(由CodeCaster承担)。