簡體   English   中英

Visual Basic子過程問題

[英]Visual Basic subprocedure issue

我正在開發Visual Studio Web開發人員的一些.NET代碼,我遇到了問題。 當我雙擊設計視圖中的按鈕而不是加載子程序時,它所做的只是突出顯示: <asp:Button ID="btnEnter" runat="server" Text="Enter" onclick="btnEnter_Click" />

當我試圖運行它只是為了看看會發生什么,我得到這個錯誤: Line 8: <asp:Button ID="btnEnter" runat="server" Compiler Error Message: BC30456: 'btnEnter_Click' is not a member of 'ASP.default_aspx'.

如果我擦除了onclick="btnEnter_Click"並運行它,它就可以了。 無論哪種方式,當我雙擊按鈕/元素時,它不應該為我創建一個類似的子程序嗎? Protected Sub TextBox1_TextChanged(sender As Object, e As EventArgs)

End Sub

我嘗試輸入那個manaully,但關鍵字不會變成藍色或任何顏色,當我運行它時,它只是在我的其他元素的webform上顯示為文本。 以下是我到目前為止的所有內容:

<%@ Page Title="Home Page" Language="VB"%>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Enter a person's name below"></asp:Label>
<p>
    <asp:TextBox ID="txtStudentName" runat="server"></asp:TextBox>
</p>
<p>
    <asp:Button ID="btnEnter" runat="server"
       Text="Enter" onclick="btnEnter_Click" />
</p>
<p>
<asp:Button ID="btnDisplay" runat="server" Text="Display all and exit" />
</p>
<p>
    <asp:Label ID="lbl2" runat="server" Text=" "></asp:Label>
</p>
<p>
<asp:Label ID="lbl3" runat="server" Text=" "></asp:Label>
</p>
<p>
    <asp:Label ID="lbl4" runat="server" Text=" "></asp:Label>
</p>
<p>
    <asp:Label ID="lbl5" runat="server" Text=" "></asp:Label>
</p>
    </form>

編輯:

當我在default.aspx.vb文件中輸入我的代碼時,它會突出顯示關鍵字等,但它不能引用我在設計視圖中創建的元素。

部分類_Default繼承System.Web.UI.Page

結束班

Class Lab1
Protected Sub TextBox1_TextChanged(sender As Object, e As EventArgs)

End Sub
Public Const length As Integer = 3
Shared counter2 As Integer = 0
Public Shared studentList As String() = New String(2) {}
Protected Sub btnEnter_Click(sender As Object, e As EventArgs)
    Label1.Text = "Enter a person's name"

    Dim studentName As [String] = txtStudentName.Text
    If studentList.Length <= length Then
        If txtStudentName.Text <> "" Then
            Dim match As [Boolean] = True
            Dim i As Integer = 0
            While counter2 >= i
                If studentList(i) IsNot Nothing Then
                    If studentList(i).ToUpper() = txtStudentName.Text.ToUpper() Then
                        match = False
                        Label1.Text = "This name has already been used"
                    End If
                End If
                i += 1
            End While
            If match = True Then
                studentList(counter2) = txtStudentName.Text
                counter2 += 1
            End If
        End If
    End If
End Sub
End Class

您的Page聲明似乎表明您使用的是inline樣式:

<%@ Page Title="Home Page" Language="VB"%>

這意味着你的代碼/應 aspx文件本身的script runat="server"標簽:

<%@ Page Language="VB" %>

<!DOCTYPE html> 

<script runat="server">

    Protected Sub Button1_Click(sender As Object, e As EventArgs)
        'Do something
    End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
   <title></title>
</head>
<body>
   <form id="form1" runat="server">
      <div>    
          <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />    
      </div>
   </form>
</body>
</html>

但是,您的其他代碼表明您似乎想要使用code-behind模型,您擁有.vb文件(例如foo.aspx.vb

對於網站, Page被聲明為這樣(對於Web 應用程序 ,它將說CodeBehind="foo.aspx.vb" ):

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="foo.aspx.vb" Inherits="foo" %>
  • 您將在項目中找到foo.asp.vb文件
  • 它的類名將是你文件的名稱(foo)
  • 你的代碼應該限定在這個類中(我不確定你上面帖子中的Class Lab1是什么......

foo.aspx.vb

Partial Class foo
   Inherits System.Web.UI.Page

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        'Do something
    End Sub

End Class

“修復”適合您:

  • 選擇要編寫代碼的模型: inlinecode-behind
  • 適當地聲明Page
  • 對於inline ,您的代碼將在aspx文件中
  • 對於code-behind ,您的代碼將存在,並且應該封裝在頁面的Class file中。
    • Page聲明實際上是這樣說的:
      • CodeFile="foo.aspx.vb"是代碼所在的文件
      • Inherits="foo"Partial Class文件中的( Partial Class foo

嘗試這個

Private Sub btnEnter_Click(sender As Object, e As System.EventArgs) Handles btnEnter.Click

End Sub

這里, btnEnter_Click是您的事件名稱,並在過程聲明的末尾使用Handles關鍵字使其處理由對象變量引發的事件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM