【问题标题】:'MsgBox' is not declared. It may be inaccessible due to its protection level'MsgBox' 未声明。由于其保护级别,它可能无法访问
【发布时间】:2018-07-09 21:43:16
【问题描述】:

我已经使用 vb.net 很长时间了,但从来没有遇到过这个问题。由于某种原因,Intellisense 没有检测到 MsgBox()。当我将鼠标悬停在突出显示的红线上时,它显示“'MsgBox' 未声明。由于其保护级别,它可能无法访问”,并且在潜在的修复中,它尝试创建一个名为 MsgBox() 的新函数。 下面是代码:

Imports System
Imports System.Data.SqlClient
Imports System.Runtime.InteropServices
Imports System.Web.Configuration
Imports Microsoft.Office.Interop.Outlook

Public Class ConferenceRooms
    Inherits System.Web.UI.Page

    Dim SQLConnection As New 
SqlConnection(ConfigurationManager.ConnectionStrings("MyDB").ConnectionString)
    Dim SQLcommand As New SqlCommand
    Dim SQLAdapter As SqlDataAdapter
    Dim SQLDataTable As DataTable

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    'MsgBox(LBTest.Attributes("title"))
    'Dim lb As Label = CType(Me.Controls("HR Conference Room"), Label)
     If Not IsPostBack Then
        Dim Query1 As String
        Query1 = "Select Location_ID from LCSConference_Locations where vacant = 1"
        RunQuery(Query1)
        Dim OrganizerEmail As String = OrgEmail.Value
        Dim Agenda As String = MeetAgenda.Value
        Dim Location As String = MeetLocation.Value
        MsgBox("Hello")

    End If
End Sub

【问题讨论】:

  • 您在编译代码时是否收到任何问题?智能感知并不完美。尝试重新启动 IDE 以查看问题是否仍然存在。
  • 是的,我也试过了。
  • 谢谢,成功了。我猜它没有包含在项目中,因为它没有在属性窗口中标记。

标签: .net vb.net intellisense msgbox


【解决方案1】:

这是重要的部分:

Inherits System.Web.UI.Page

您非常熟悉的 VB.Net 是用于 Windows 窗体的。我们这里有一个 ASP.Net WebForms 页面。 您不能在网页中使用MsgBox()因为原始 HTML 没有直接匹配。

好的,你可以通过正确的调整,但它不会按照你想要的方式工作 - 消息将显示在 服务器 上的一个特殊私人桌面上,在那里它会阻止请求,直到线程超时,最终用户将永远看不到它。它有时可能似乎按照您想要的方式工作,但这仅在您的开发环境中,Web 服务器和客户端浏览器位于同一台机器上。在现实世界中最接近的方法是注册一个 javascript 函数以在 DOM 启动时运行以调用 alert(),但这远没有那么好。

这只是 Web 窗体和 WinForms 平台之间的许多差异之一。 Web Forms 旨在使开发人员更容易从 WinForms 世界过渡到 Web 开发,但它仍然是一个全新的平台,基于 HTTP 请求/响应模型的必要性。它仍然需要大量学习才能学好,就像任何其他平台一样。

因此,在构建网页时,您需要考虑创建一个 HTML 元素来显示您的信息。重要的是要记住,您编写的任何 VB.Net 事件代码都在 web 服务器 上运行,只有在向服务器发送一个完全重新启动页面生命周期的新请求之后,并且距离结束很远用户;永远不会在用户的网络浏览器中。起初这可能非常令人沮丧,因为与 javascript 和公司相比,您往往会相当了解 VB.Net 和 WinForms API。但随着时间的推移,它确实会变得更容易。

但在这种情况下,您实际上只是使用MsgBox() 来输出调试信息。你可以在这里做的是使用System.Diagnostics.Trace 类。 Trace 可让您将消息直接放入 Visual Studio 输出窗口...或文件、数据库、控制台或您想查看的任何位置。

【讨论】:

  • 这是一个很好的解释。虽然我建议让您的应用程序向您发送短信而不是 MsgBox。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多