首页 > 解决方案 > 'MsgBox' 未声明。由于其保护级别,它可能无法访问

问题描述

我一直在使用 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

标签: .netvb.netintellisensemsgbox

解决方案


这是重要的部分:

Inherits System.Web.UI.Page

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

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

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

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

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


推荐阅读