1

我正在编写一个 dll 库(例如用于检查用户的登录详细信息),我想在此过程中弹出一个确认对话框或信息对话框,例如

"Are you sure you want to continue? (Yes/No/Cancel)"

由于某些原因。目前我需要这个用于 Winforms 中的应用程序,我也想为我的其他 webforms 应用程序使用相同的 dll。谁能指导如何实现它?不用多说我不想引用System.Windows.FormsSystem.Web. 任何人都可以给我一些指示吗?我正在使用 .net 4.0

我不想发布/订阅事件,因为我对 cab 架构不是很熟悉。

编辑

我有一个用于在应用程序运行时创建数据库的 dll。所以我的 dll 通常会检查数据库是否已经存在并且是否是最新的,如果它是然后停止。但是如果它不存在或不是最新的,那么我想问用户他是想现在还是以后更新它。如果用户现在说,更新它,然后说继续申请。这只是一个示例,欢迎提供任何相关信息。

谢谢。

4

2 回答 2

6

你真的不应该。这不属于库,但应该在使用此库的应用程序中完成。

WinForms 应用程序可能会通过显示 来解决它MessageBox,而 Web 应用程序可能会在成功的 POST 之后执行请求而不询问(因为 POST 通常显示修改资源的意图)。

例如,当您的库用于登录时,只需抛出一个AuthenticationException,以便客户端应用程序(无论是 WinForms、Web 还是其他)可以捕获并显示适当的消息。


至于您的编辑:

我有一个用于在应用程序运行时创建数据库的 dll ...

为什么不公开两个方法,比如IsDatabaseUpToDate()and UpdateDatabase()?然后在客户端,就可以调用第一个方法了。如果它返回 false,您将询问用户(无论是使用 MessageBox、HTML 表单、JavaScript 警报、简单的“是”按钮还是闪烁的磁贴)他们是否要更新数据库。如果是这样,你调用该UpdateDatabase()方法,你就可以开始了。

于 2012-05-02T11:02:44.757 回答
0

为此,您需要右键单击项目并选择“添加引用”,然后选择“.NET”选项卡并单击“System.Windows.Forms”。那么这应该在.dll中工作:

System.Windows.Forms.MessageBox.Show("Hello World!");

当然,这对于原始海报(如 CodeCaster 所涵盖)来说是个坏主意。

于 2013-01-31T20:54:35.523 回答