在类库中使用MessageBox

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/37963679

错误:

       机房收费系统(VB.Net版)过程中,在D层的SqlHelper类中有一个异常捕获处理,捕获了异常之后想使用MessageBox.Show()弹出异常描述,但在编译时出现了“未声明“MessageBox”。它可能因其保护级别而不可访问。”的错误:

        查看帮助,MSDN给出的解释是:语句引用某个编程元素,但编译器无法找到具有该确切名称的元素

判断:

        编译器无法识别,但MessageBox在窗体应用程序中可以使用,而且MessageBox.Show()为.Net中公用的库函数,所以原因可能是窗体应用程序的项目隐含引用了函数库中的某个包含MessageBox.Show()的程序集,而类库项目没有引用这个程序集。

解决:

        根据判断看了一下UI层的引用,果然比D层多了好多引用,经过尝试,得到结论:如果在D层(只是类库类型的项目的代表)使用MessageBox()方法,需要引用命名空间System.Windows.Forms。具体操作为(我用的是VIsualStudio2013,其他版本应该没有太大差异):

        1、右键要引用System.Windows.Forms的项目→添加→引用

         2、选择程序集下的“框架”,在System.Windows.Forms前打上勾,确定

        3、在类的文件头引用System.Windows.Forms:

         Imports System.Windows.Forms

         Tips:其实大家都知道,也可以直接使用Msgbox,但这两者有何区别呢?那么就请大家去问度娘吧。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏林德熙的博客

win10 uwp 读取文本GBK错误

本文讲的是解决UWP文本GBK打开乱码错误,如何去读取GBK,包括网页GBK。最后本文给出一个方法追加文本。

15410
来自专栏张善友的专栏

在ASP.NET应用启动的时候初始化的几种方法

ASP.NET 4.0 之前,有两种方法:通过Global.asax 中的 Application_Start 事件启动,或者通过定义在 App_Code 文件...

18160
来自专栏大内老A

如何编写没有Try/Catch的程序

在上面一篇文章《谈谈关于MVP模式中V-P交互问题》中,我提到最近一直为一个项目进行Code Review的工作,从中发现了一些问题,同时也有了一些想法。上次谈...

227100
来自专栏me的随笔

ASP.NET Core Middleware

中间件(Middleware)是ASP.NET Core中的一个重要特性。所谓中间件就是嵌入到应用管道中用于处理请求和响应的一段代码。ASP.NET Core ...

16040
来自专栏林德熙的博客

Resharper 去掉注释拼写

最近在 Resharper 的 2018.2.1 的版本,提供了单词拼写功能,如果自己写错了单词,可以在 Resharper 提示

61420
来自专栏GreenLeaves

九、将cs文件快速的转换成可执行文件和响应文件(配置编译开关的文件)

1、将包含多个类型的源代码文件转换为可以部署的文件。有如下Program.cs的文件,代码如下: public sealed class Program...

32170
来自专栏数值分析与有限元编程

Visual Studio 查看函数或者变量定义

Visual Studio号称宇宙级IDE,其功力自然了得。现在来说一说查看函数或者变量定义这个实用功能。我们知道,Fortran语言的变量必须提前声明,这样...

34050
来自专栏大内老A

ASP.NET MVC路由扩展:路由映射

上周我写了三篇文章(一、二、三)详细地介绍了ASP.NET的路由系统。ASP.NET的路由系统旨在通过注册URL模板与物理文件之间的映射进而实现请求地址与文件路...

223100
来自专栏hbbliyong

LINQ 图解 LINQ学习第三篇

LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual ...

31360
来自专栏葡萄城控件技术团队

如何遍历当前进程中的AppDomain

.Net Framework居然没有提供托管的接口来获取当前进程中的其它AppDomain!所以,我们只有借助承载接口(Hosting Interfaces)来...

24080

扫码关注云+社区

领取腾讯云代金券