You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET:如何在Confirm按钮调用BtnAddOrder的AmountPayable变量?

解决VB.NET跨方法访问变量的问题

问题原因

你在BtnAddOrder_Click方法内用Dim AmountPayable As Double声明的变量是局部变量,仅能在当前方法内部使用,BtnConfirm_Click方法无法访问这个变量,因此会提示“未声明”。

简单解决步骤

要让两个方法都能访问AmountPayable,只需将它从方法内部的局部变量,改为类级别的私有字段:

  1. 在类的最顶部(所有Sub方法外面)添加变量声明:
Private AmountPayable As Double
  1. 删除BtnAddOrder_Click里的Dim AmountPayable As Double这一行(已在类级别声明,无需重复定义)
  2. 此时BtnConfirm_Click方法即可直接使用AmountPayable变量

修改后的完整代码示例

Public Class YourFormName ' 替换为你的窗体类名
    ' 类级别私有字段,类内所有方法均可访问
    Private AmountPayable As Double

    Private Sub BtnAddOrder_Click(sender As Object, e As EventArgs) Handles BtnAddOrder.Click
        Dim AddOns As String
        Dim BlackPearl As String
        Dim Oreo As String
        Dim Nata As String
        Dim CoffeeJelly As String
        Dim CreamCheese As String

        AddOns = " "
        BlackPearl = " "
        Oreo = " "
        Nata = " "
        CoffeeJelly = " "
        CreamCheese = " "


        If ChkBoxBlackPearl.Checked = True Then
            AddOns = "Black Pearl"
        End If
        If ChkBoxOreo.Checked = True Then
            AddOns = AddOns & "," & " Oreo"
        End If
        If ChkBoxNata.Checked = True Then
            AddOns = AddOns & "," & " Nata De Coco"
        End If
        If ChkBoxCoffeeJelly.Checked = True Then
            AddOns = AddOns & "," & " Coffee Jelly"
        End If
        If ChkboxCreamCheese.Checked = True Then
            AddOns = AddOns & "," & " CreamCheese"
        End If


        Dim Payment As String
        Payment = " "
        If RbtnGcash.Checked = True Then
            Payment = "Gcash"
        End If
        If RbtnDebit.Checked = True Then
            Payment = "Debit Card"
        End If
        If RbtnCoins.Checked = True Then
            Payment = "Coins.ph"
        End If

        If RbtnCash.Checked = True Then
            Payment = "Cash"
        End If

        Dim DiscountRate As Double

        If RbtnPWD.Checked = True Then
            DiscountRate = 0.05

        End If
        If RbtnSenior.Checked = True Then
            DiscountRate = 0.1
        End If
        If RbtnStudent.Checked = True Then
            DiscountRate = 0.03
        End If
        If RbtnDiscountNone.Checked = True Then
            DiscountRate = 0
        End If

        Dim Transaction As String
        Transaction = " "
        If RbtnDelivery.Checked = True Then
            Transaction = "15"
        End If

        If RbtnWalkin.Checked = True Then
            Transaction = "None"
        End If

        TxtTotalAddOn.Text = Val(TxtBlackPearl.Text) + Val(TxtOreo.Text) + Val(TxtNataDeCoco.Text) + Val(TxtCoffeeJelly.Text) + Val(TxtCreamCheese.Text)


        Dim Total As Integer
        Dim DiscountPrice As Double

        Total = Val(TxtTotalAddOn.Text) + Val(TxtSizeprice.Text) + Val(TxtDeliveryFee.Text)

        DiscountPrice = Total * DiscountRate

        AmountPayable = (Total - DiscountPrice) * Val(ComboQuantity.Text)

        If AddOns.Length <> 0 Then
            MessageBox.Show("********************************" + vbCr + "Troo Tea Ordering System" + vbCr + "********************************" + vbCr + "Choosen DRINK: " + ComboDrink.Text + vbCr + "********************************" + vbCr + "Quantity: " + ComboQuantity.Text + vbCr + "********************************" + vbCr + "Size: " + Sizename + vbCr + "********************************" + vbCr + "Price " + TxtSizeprice.Text + vbCr + "********************************" + vbCr + "AddOns: " + AddOns + vbCr + "********************************" + vbCr + "Total AddOns " + TxtTotalAddOn.Text + vbCr + "********************************" + vbCr + "Delivery Fee" + TxtDeliveryFee.Text + vbCr + "********************************" + vbCr + "Discount " + TxtDiscount.Text + vbCr + "Total " + Total.ToString + vbCr + "Amount Payable: " + AmountPayable.ToString + vbCr + "********************************" + vbCr + "*******************" + vbCrLf + "Thank You For Your Order" + vbCrLf + "*******************")
        End If

        TxtOrderDetails.Text = ("Customer Name: " + TxtCustomername.Text + vbCrLf + "Phone Number: " + TxtPhone.Text + vbCrLf + "Address: " + TxtAddress.Text + vbCrLf + "***********************************************************" + vbCrLf + "Choosen DRINK: " + ComboDrink.Text + vbCrLf + "Quantity: " + ComboQuantity.Text + vbCrLf + "Size: " + Sizename + vbCrLf + "Price: " + TxtSizeprice.Text + vbCrLf + "AddOns: " + AddOns + vbCrLf + "Total AddOns: " + TxtTotalAddOn.Text + vbCrLf + "Delivery Fee: " + TxtDeliveryFee.Text + vbCrLf + "Mode Of Payment: " + Payment + vbCrLf + "Discount Rate for Each Order: " + TxtDiscount.Text + vbCrLf + "Total Price Per Order: " + Total.ToString + vbCrLf + "Amount Payable: " + AmountPayable.ToString + vbCrLf + "***********************************************************" + vbCrLf + "Thank You For Your Order" + vbCrLf + "***********************************************************" + vbCrLf + "Date Of Transaction: " + DateTimePicker1.Text)

    End Sub

    Private Sub BtnConfirm_Click(sender As Object, e As EventArgs) Handles BtnConfirm.Click
        ' 示例:使用AmountPayable变量
        MessageBox.Show("确认支付金额:" & AmountPayable.ToString("C"))
    End Sub
End Class

额外提示

  • 类级别字段默认初始值为0.0,若担心用户直接点击BtnConfirm导致金额无效,可在该方法内添加判断:If AmountPayable <= 0 Then MessageBox.Show("请先添加订单计算金额")

内容的提问来源于stack exchange,提问作者Johane Grei Wall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:50:31