错误:
机房收费系统(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,但这两者有何区别呢?那么就请大家去问度娘吧。